我使用的是windows 10和python3.7/ OpenCV4以及罗技C922摄像头。虽然摄像头似乎提供了30 fps使用windows相机应用程序,我不能得到超过5-6 fps使用OpenCV。分辨率设置为FHD。
cam = cv2.VideoCapture(cv2.CAP_DSHOW+0)
while(1):
ret,frame = cam.read()
if cv2.waitKey(1) & 0xFF == ord('q'):
break在另一篇文章中,我找到了将编解码器更改为MJPG的解决方案。然而,相机不接受改变编解码器。我试过:
cam.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter_fourcc('m','j','p','g'))
cam.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter_fourcc('M','J','P','G'))
cam.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter_fourcc(*'MJPG'))
cam.set(cv2.CAP_PROP_FOURCC, float(cv2.VideoWriter_fourcc('m','j','p','g'))
cam.set(cv2.CAP_PROP_FOURCC, float(cv2.VideoWriter_fourcc('M','J','P','G'))
cam.set(cv2.CAP_PROP_FOURCC, 1196444237.0)照相机总是返回"844715353.0“
如何实现更高的fps?
发布于 2020-12-01 20:52:11
看来秩序很重要。据我所知,OpenCv在后台使用ffmpeg。在ffmpeg中,命令应该如下所示:
ffmpeg -f dshow -framerate 60 -video_size 1280x720 -input_format mjpeg -i video="my webcam" out.mkv所以您的OpenCV代码应该如下所示
my_cam_index = 0
cap = cv2.VideoCapture(my_cam_index, cv2.CAP_DSHOW)
cap.set(cv2.CAP_PROP_FPS, 60.0)
cap.set(cv2.CAP_PROP_FRAME_WIDTH,1280)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT,720)
cap.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter.fourcc('M','J','P','G'))发布于 2020-06-13 12:20:35
我与罗技c920摄像头一起工作,在imutils模块中测试WebcamVideoStream类,该模块使用线程和队列数据结构来改进OpenCV处理视频流时将I/O (即从摄像机传感器读取帧)移动到一个单独的线程,您可以在该文件webcamvideostream.py上设置自定义分辨率。
您可以使用线程获得更高的FPS。也许这个解决方案能帮你。
请参阅以下链接:
https://www.pyimagesearch.com/2015/12/21/increasing-webcam-fps-with-python-and-opencv/
https://www.pyimagesearch.com/2017/02/06/faster-video-file-fps-with-cv2-videocapture-and-opencv/
https://github.com/jrosebr1/imutils/blob/master/imutils/video/webcamvideostream.py
https://stackoverflow.com/questions/62358230
复制相似问题