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

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

相关推荐
Brilliantwxx11 分钟前
【STM32】 I2C_EEPROM_test 工程(实战篇)
开发语言·stm32·单片机·嵌入式硬件·ecmascript
清水白石00816 分钟前
Python 异步编程深度解析:Cancellation 到底是异常还是控制信号?从 asyncio 取消机制到企业级事务设计最佳实践
开发语言·python
kolyle23 分钟前
万级 QPS 下的 Token 分发系统架构:从 0 到 1 跑通 AI 时代的“水电煤“
开发语言·人工智能·系统架构·token·qps·极智词元·大模型私有化部署
caoerzhong36 分钟前
JeeWMS 开源仓库管理系统 GPL-3.0 合规指南:Java WMS 二次开发前必须弄清的授权边界
java·开发语言·开源·vue
Patrick在香港36 分钟前
Python 审计香港开放数据目录:两个端点差 10 倍,只有 9.3% 的资源标了「最后修改时间」
开发语言·数据库·python·数据分析·api·数据治理·开放数据
IT毕设梦工厂37 分钟前
计算机毕业设计选题推荐:基于大数据的草鱼价格分析与可视化|毕业设计选题|计算机毕设|选题推荐|毕设指导|项目定制|源码|高质量项目
大数据·hadoop·python·数据挖掘·数据分析·课程设计·大数据毕设项目
GISHUB1 小时前
基于QGIS 3.44开发Python插件完整教程
python·qgis
大数据魔法师1 小时前
curl_cffi从入门到实战
爬虫·python
Sylvia33.1 小时前
火星数据体育API|一站式接入足球篮球电竞等18+项目实时数据
java·开发语言·python·websocket·游戏
程序员清风1 小时前
LangGraph 入门:用状态机设计可靠的 Agent 工作流
人工智能·python