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

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

相关推荐
代码山河5 小时前
Python就业方向全解析:后端、爬虫、数据分析、AI你选哪个?
python·学习·架构·教程·面向对象·项目
在世修行5 小时前
智学文枢:题目流水线
python·多线程·状态机·pyside
C^h5 小时前
c++ string
开发语言·c++
raindayinrain5 小时前
c++高性能--原子操作,无锁编程,操作顺序
开发语言·c++·性能优化
梯度下降者5 小时前
零基础入门Python 爬虫
爬虫·python·数据分析·入门指南·webcrawler
学逆向的5 小时前
C++ 合并命名空间
开发语言·c++·网络安全
Zhao-Jichao5 小时前
VS2026 打包 C++ 程序生成 EXE,借助 Installer Project 扩展工具
开发语言·c++
学逆向的6 小时前
C 局部静态变量
c语言·开发语言·网络安全
大都督会赢的7 小时前
C++第一节课
开发语言·c++
“AI国潮设计-小江”7 小时前
【AIGC实战】Python+Stable Diffusion打造“英歌舞财神”IP,解锁“马到成功”等爆款情绪营销文案设计
开发语言·人工智能·python·prompt·aigc