OpenCV 3.4.1-dev“libv4l2:error set_fmt给了我们不同的结果然后try_fmt!”

时间:2018-03-26 16:38:42

标签: opencv opencv3.1

我正在尝试从USB相机中提取简单视频,然后根据需要将其导出为.AVI或.PNG。

我已经在Python3脚本中实现了OpenCV,版本3.4.1-dev 一个C ++程序。 Python3脚本和C ++程序都在Windows上运行良好,没有错误。

C ++程序在Windows和Ubuntu上编译得很好,但是在Ubuntu上运行时,Python脚本和C ++程序都会出现以下错误:

libv4l2: error set_fmt gave us a different result then try_fmt!
OpenCV(3.4.1-dev) Error: Unspecified error (GStreamer: unable to start pipeline
) in cvCaptureFromCAM_GStreamer, file /opt/opencv/modules/videoio/src/cap_gstreamer.cpp, line 890
VIDEOIO(cvCreateCapture_GStreamer(CV_CAP_GSTREAMER_V4L2, reinterpret_cast<char *>(index))): raised OpenCV exception:

OpenCV(3.4.1-dev) /opt/opencv/modules/videoio/src/cap_gstreamer.cpp:890: error: (-2) Unspecified error: GStreamer: unable to start pipeline
 in function cvCaptureFromCAM_GStreamer

libpng warning: Image width is zero in IHDR
libpng warning: Image height is zero in IHDR
libpng error: Invalid IHDR data

我尝试了许多printf()语句,并将问题缩小到“VideoCapture capture(0);”这一行。根据我的有限知识,似乎Ubuntu无法在Windows 0能够找到ID为0的摄像头。我还尝试了一个for循环来查看相机是否有更高的ID号,但这没有帮助;它通过了其他数字,当它达到ID 0时仍然崩溃。

我的每次搜索帮助都会为早期版本的OpenCV产生许多不同的问题,并且所有问题都会返回到相同的错误消息:

libv4l2: error set_fmt gave us a different result then try_fmt!

我不知道如何处理此错误。 这似乎是OpenCV 3.4.1-dev本身的一个问题。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

好吧,我遇到了类似的问题(错误消息相同):

libv4l2:错误set_fmt给我们的结果与try_fmt不同!

这不是OpenCV问题,而是v4l中的一个BUG:

https://bugs.launchpad.net/ubuntu/+source/v4l-utils/+bug/1737063

我将v4l-utils软件包升级到了BUG报告所指示的修订版本(1.12.6),错误消息消失了,相机开始正常工作。