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)练习心得:

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

相关推荐
卷无止境1 小时前
LiteLLM 全面解析开源AI网关如何统一管理百余种大模型
后端·python
郝学胜-神的一滴1 小时前
[简化版 GAMES 104] 现代游戏引擎 06:从Tick时序到邮局模型,拆解确定性世界的底层密码
开发语言·c++·游戏引擎·图形渲染·软件开发·opengl
二十雨辰1 小时前
[Java]-微服务面试题
java·开发语言·微服务
不会代码的小猴1 小时前
6. Qt网络编程
开发语言·c++·笔记·qt·算法
caimouse1 小时前
ReactOS 图形系统分析(50):画笔子系统 — pen.c
c语言·开发语言·stm32
我的xiaodoujiao1 小时前
使用PyMySQL模块技术操作MySQL数据库
数据库·python·测试工具·mysql
卷无止境2 小时前
终端里的AI辅助,一场正在发生的编程效率变革
后端·python
苏灿烤鱼2 小时前
上下文写成文件系统,为什么向量还能静默丢?
python·github·agent
caimouse2 小时前
ReactOS 图形系统分析(48):弧线绘制 — arc.c
c语言·开发语言