Python课后习题训练记录Day193

1.练习项目 :

练习使用Python语言

2.开始练习

(1)源码 :

import cv2

from ultralytics import YOLO

========== 配置参数 ==========

MODEL_PATH = 'yolo11n.pt'

CONFIDENCE_THRESHOLD = 0.5

焦距(像素)------ 基于你刚刚标定的结果

FOCAL_PERSON = 440 # 垂直焦距,用于行人(身高)

FOCAL_CAR = 444 # 水平焦距,用于车辆(车宽),保持你之前的标定

真实尺寸(米)

PERSON_HEIGHT = 1.70 # 行人身高

CAR_WIDTH = 1.80 # 车辆宽度

只检测的类别(person:0, car:2)

TARGET_CLASSES = {0, 2}

========== 工具函数 ==========

def compute_distance(real_size, focal, pixel_size):

if pixel_size <= 0:

return -1

return (real_size * focal) / pixel_size

========== 加载模型 ==========

model = YOLO(MODEL_PATH)

========== 打开摄像头 ==========

cap = cv2.VideoCapture(0)

if not cap.isOpened():

print("无法打开摄像头")

exit()

print("按 'q' 退出,按 's' 保存截图")

while True:

ret, frame = cap.read()

if not ret:

break

推理(只检测 person 和 car)

results = model(frame, verbose=False, classes=0, 2)

for r in results:

boxes = r.boxes

if boxes is None:

continue

for box in boxes:

conf = float(box.conf0)

if conf < CONFIDENCE_THRESHOLD:

continue

cls = int(box.cls0)

x1, y1, x2, y2 = box.xyxy0.tolist()

if cls == 0: # person

pixel_size = y2 - y1 # 高度(像素)

real_size = PERSON_HEIGHT

focal = FOCAL_PERSON

label_name = "Person"

elif cls == 2: # car

pixel_size = x2 - x1 # 宽度(像素)

real_size = CAR_WIDTH

focal = FOCAL_CAR

label_name = "Car"

else:

continue

distance = compute_distance(real_size, focal, pixel_size)

if distance < 0:

continue

绘制

cv2.rectangle(frame, (int(x1), int(y1)), (int(x2), int(y2)), (0, 255, 0), 2)

text = f"{label_name} {conf:.2f} | {distance:.1f}m"

cv2.putText(frame, text, (int(x1), int(y1) - 5),

cv2.FONT_HERSHEY_SIMPLEX, 0.6, (0, 255, 0), 2)

cv2.imshow("YOLO Distance Measurement", frame)

key = cv2.waitKey(1) & 0xFF

if key == ord('q'):

break

elif key == ord('s'):

cv2.imwrite("distance_screenshot.jpg", frame)

print("截图已保存")

cap.release()

cv2.destroyAllWindows()

(2)检验结果

对此代码进行检验,检验后无报错,运行此代码,运行结果正确。

(3)练习心得:

注意每段代码末尾的分号是否存在 ,如不存在则需即使补充;输入法 是否切换为英语模式;语法是否错误。

相关推荐
朝朝辞暮i7 小时前
VLA 系统学习第 4 课:一个 Batch 进入神经网络后,模型到底是怎么“学会”的?
人工智能·python·神经网络·vla
Ada's8 小时前
【计算机基础系列】003:Python数据结构
开发语言·数据结构·python
2601_962885728 小时前
如何用 Python 计算 TRIX 三重指数平滑均线指标?
开发语言·python
还卿一钵无情泪9 小时前
Unsloth 微调 构建自己的大模型 没有GPU也能微调
linux·开发语言·人工智能·python·大模型·nlp·unsloth
倔强的石头10610 小时前
应用账号最小权限实践:读写账号、报表账号、运维账号分层
java·运维·开发语言
传人once10 小时前
页面中心圆圈放大效果如何写
开发语言·javascript·ecmascript
NeilYuen10 小时前
【C++】STL源码仿写(二):vector
开发语言·c++
蜗牛互联网11 小时前
Python消费Responses SSE事件:增量文本、超时与取消
java·开发语言·人工智能·后端·python
statistican_ABin11 小时前
中国国际旅游发展分析报告—基于世界银行国际旅游数据的多维度分析
python·机器学习·旅游
weixin_3077791311 小时前
C++代码实现MATLAB中的crossval函数功能
开发语言·c++·算法·matlab