赞
踩
代码如下:
- from ultralytics import YOLO
- import cv2
- from cv2 import getTickCount, getTickFrequency
- yolo=YOLO('./yolov8n.pt')
-
-
-
-
- #摄像头实时检测
-
- cap = cv2.VideoCapture(0)
- while cap.isOpened():
- loop_start = getTickCount() #记录循环开始的时间,用于计算每一帧的处理时间
- success, frame = cap.read() # 读取摄像头的一帧图像
-
- if success:
- results = yolo.predict(source=frame) # 对当前帧进行目标检测并显示结果
- annotated_frame = results[0].plot() #将检测结果绘制在图像上,得到带有目标框的图像。
-
- # 显示程序
- loop_time = getTickCount() - loop_start #计算处理一帧图像所花费的时间。
- total_time = loop_time / (getTickFrequency()) #将处理时间转换为秒数。
- FPS = int(1 / total_time) #FPS计算
- # 在图像左上角添加FPS文本
- fps_text = f"FPS: {FPS:.2f}"#构造显示帧率的文本字符串
- font = cv2.FONT_HERSHEY_SIMPLEX#选择字体类型
- font_scale = 1 #设置字体的缩放比例
- font_thickness = 2 #设置字体的粗细
- text_color = (0, 0, 255) # 红色
- text_position = (10, 30) # 左上角位置
-
- cv2.putText(annotated_frame, fps_text, text_position, font, font_scale, text_color, font_thickness)
- cv2.imshow('Real-time detection', annotated_frame)
- # 通过按下 'q' 键退出循环
- if cv2.waitKey(1) & 0xFF == ord('q'):
- break
-
- cap.release() # 释放摄像头资源
- cv2.destroyAllWindows() # 关闭OpenCV窗口
测试结果展示:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。