记一次OpenCv打开摄像头失败问题的处理

眉间皱痕 提交于 2020-10-14 19:53:02

补注

我个人的测试环境为:

  • Python 3.8
  • OpenCV 4.4

测试过程中,遇到错误,受益于下面引文,原文如下:


最近做一个项目要用到opencv调用摄像头,遇到一个问题让折腾我一晚上才搞定,为避免有人遇到和我同样的问题,在此做个记录。

错误

问题描述:使用VideoCapture打开摄像头时,摄像头总是闪一下就关闭,查看错误信息发现有一行警告([ WARN:0] Failed to set mediaType (stream 0, (640x480 @ 30) MFVideoFormat_RGB24(unsupported media type)),大意上是告诉我媒体类型不匹配,设置分辨率失败!

网上搜了很多关于此类型的问题,都没能解决我的问题。

最后突然想到去github bug反馈那边搜了一下,还真让我搜到一丝线索,说是调用VideoCapture打开媒体文件时如果第二个参数传入cv::CAP_MSMF(capture.open(0, cv::CAP_MSMF))就有可能出现这种问题。这是该Bug链接VideoCapture fails to get frame if I use msmf and mp4 has audio stream,有兴趣可以了解下。

回头上面我遇到的错误信息,不正是MSMF类型的吗?原来VideoCapture打开摄像头默认媒体类型是CAP_MSMF,于是二话不说,直接显示传入参数capture.open(0, cv::CAP_DSHOW),搞定!

感谢本文作者分享!

原文地址:
https://blog.csdn.net/gjw61652/article/details/106878294

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!