ubuntu16.04 opencv打开摄像头失败
按照opencv检测AruCo标记教程,运行程序时打开摄像头失败,使用的相机是Intel RealSense D435。
发生问题的代码如下。
cv::VideoCapture inputVideo;
inputVideo.open(0);
程序运行时给出的错误提示如下。
[ WARN:0] global /home/liangbeibei/image_envirment/opencv-4.4/opencv-4.4.0/modules/videoio/src/cap_gstreamer.cpp (1761) handleMessage OpenCV | GStreamer warning: Embedded video playback halted; module v4l2src0 reported: Internal data flow error.
[ WARN:0] global /home/liangbeibei/image_envirment/opencv-4.4/opencv-4.4.0/modules/videoio/src/cap_gstreamer.cpp (888) open OpenCV | GStreamer warning: unable to start pipeline
[ WARN:0] global /home/liangbeibei/image_envirment/opencv-4.4/opencv-4.4.0/modules/videoio/src/cap_gstreamer.cpp (480) isPipelinePlaying OpenCV | GStreamer warning: GStreamer: pipeline have not been created
[ WARN:0] global /home/liangbeibei/image_envirment/opencv-4.4/opencv-4.4.0/modules/videoio/src/cap_v4l.cpp (893) open VIDEOIO(V4L2:/dev/video0): can't open camera by index
Intel RealSense D435有三个镜头,包括构成双目的两个镜头和一个彩色镜头。经过测试,opencv库打开相机时只能打开彩色镜头,打不开两个双目镜头。
open()函数的参数为0,代表打开编号为0的镜头。当编号为0的镜头是双目镜头之一时,程序就会报错。
inputVideo.open(0);
在Ubuntu系统中打开终端,输入以下命令,就可以显示出系统中有几个可用的相机。
ls /dev/video*
输出如下。
/dev/video0 /dev/video1 /dev/video2
更改open()函数中相机编号,依次实验。最终结果是,当编号为2时,相机可以打开。
最终代码如下。
cv::VideoCapture inputVideo;
inputVideo.open(2);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)