最近在学YOLOv3
YOLOv3, 于是看 “从零开始PyTorch项目:YOLO v3目标检测实现”
英文原版:https://blog.paperspace.com/how-to-implement-a-yolo-object-detector-in-pytorch/
网上也有许多翻译
原版教程中的github项目地址 https://github.com/ayooshkathuria/YOLO_v3_tutorial_from_scratch
遇到的问题:用YOLOv3 运行视频文件,处理后的视频没有保存
解决办法:修改video.py 文件,用opencv,保存视频文件
详细步骤:
1. 在while循环前添加
fourcc = cv2.VideoWriter_fourcc('M','J','P','G') fps = 24 savedPath = 'saveVideo.avi' # 保存地址 ret, frame = cap.read() videoWriter = cv2.VideoWriter(savedPath, fourcc, fps,(frame.shape[1], frame.shape[0])) # 最后为视频图片的形状 while cap.isOpened(): ret, frame = cap.read() if ret:
## 中间省略,之后修改部分都有注释
list(map(lambda x: write(x, frame), output)) cv2.imshow("frame", frame) videoWriter.write(frame) # 每次循环,写入该帧 key = cv2.waitKey(1) if key & 0xFF == ord('q'): break frames += 1 print(time.time() - start) print("FPS of the video is {:5.2f}".format( frames / (time.time() - start))) else: videoWriter.release() # 结束循环的时候释放 break
不过这么写,相当于扔了视频第一frame,强迫症患者,可以优化一下。