首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用OpenCV/Python无法更改摄像头的编解码器

使用OpenCV/Python无法更改摄像头的编解码器
EN

Stack Overflow用户
提问于 2020-06-13 10:06:21
回答 2查看 1.7K关注 0票数 0

我使用的是windows 10和python3.7/ OpenCV4以及罗技C922摄像头。虽然摄像头似乎提供了30 fps使用windows相机应用程序,我不能得到超过5-6 fps使用OpenCV。分辨率设置为FHD。

代码语言:javascript
复制
cam = cv2.VideoCapture(cv2.CAP_DSHOW+0)
while(1):
    ret,frame = cam.read()
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

在另一篇文章中,我找到了将编解码器更改为MJPG的解决方案。然而,相机不接受改变编解码器。我试过:

代码语言:javascript
复制
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?

EN

Stack Overflow用户

回答已采纳

发布于 2020-12-01 20:52:11

看来秩序很重要。据我所知,OpenCv在后台使用ffmpeg。在ffmpeg中,命令应该如下所示:

代码语言:javascript
复制
ffmpeg -f dshow -framerate 60 -video_size 1280x720 -input_format mjpeg -i video="my webcam" out.mkv

所以您的OpenCV代码应该如下所示

代码语言:javascript
复制
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'))
票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62358230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档