这次在之前的功能上添加了调用电脑摄像头的功能,主要用到了CV2的视频处理功能,另外视频检测的结果会以视频的形式保存在当前目录的下,名为output.mp4,打开就可以查看视频记录了
主要流程部分代码如下:
# 初始化视频写入器
fourcc = cv2.VideoWriter_fourcc(*'mp4v') # 定义编解码器
out = cv2.VideoWriter('output.mp4', fourcc, 5.0, (640, 480)) # 定义输出视频
model.set_classes(texts)
# 获取摄像头内容,参数 0 表示使用默认的摄像头
cap = cv2.VideoCapture(0)
self.is_camera_open = True # 设置摄像头已经打开的标志
while self.is_camera_open:
loop_start = cv2.getTickCount()
success, frame = cap.read() # 读取摄像头的一帧图像
if success:
results=model.predict(source=frame, conf=score_thr, iou=nms_thr, max_det=max_num_boxes)
#results = model.predict(source=frame) # 对当前帧进行目标检测并显示结果
annotated_frame = results[0].plot()
# 将图像数据转换为QImage格式
height, width, channel = annotated_frame.shape
bytes_per_line = 3 * width
qimage = QImage(
annotated_frame.data, width, height, bytes_per_line, QImage.Format_RGB888
)
# 将QImage转换为QPixmap
pixmap = QPixmap.fromImage(qimage)
# 都执行:
self.imageLabelpredict.setPixmap(pixmap)
self.imageLabelpredict.setScaledContents(True)
# 写入帧到视频文件
out.write(annotated_frame)
演示视频如下:
添加了调用电脑摄像头的功能
之前的作品:
基于YOLO-World的桌面PYQT5目标检测程序设计-CSDN博客