我想在Linux mint18.3上用C++打开一个带有OpenCV的USB摄像头。摄像头已插入电源,并可通过Common Vision模块与SoftwareSuite配合使用。使用- lsusb时,我会得到以下输出:
Bus 002 Device 005: ID 1ab2:0001
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 002: ID 0cf3:e300 Atheros Communications, Inc.
Bus 001 Device 003: ID 1bcf:2b95 Sunplus Innovation Technology Inc.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub第一个条目似乎是相机,因为如果拔下相机插头,该条目就不存在。但是我不明白为什么没有显示一个名字。
然后我在互联网上找到了USB摄像头,路径是:/dev/v4l/by-id/ or /dev/v4l/by-path/。/dev/v4l/by-id/的条目为:
usb-CNFEH73N3462520017B2_Integrated_Webcam_HD-video-index0/dev/v4l/by-path/的条目是:
pci-0000:00:14.0-usb-0:12:1.0-video-index0所以我想用OpenCV打开pci-0000:00:14.0-usb-0:12:1.0-video-index0,方法是:
VideoCapture
cap("/dev/v4l/by-id/usb-CNFEH73N3462520017B2_Integrated_Webcam_HD-video-index0");我使用Clion作为IDE,并以root身份正常运行它,但在这两种情况下,我都会得到以下错误:
GStreamer Plugin: Embedded video playback halted; module source reported: Could not read from resource.
OpenCV Error: Unspecified error (GStreamer: unable to start pipeline) in cvCaptureFromCAM_GStreamer
/opencv-3.0.0/modules/videoio/src/cap_gstreamer.cpp, line 773 terminate called after throwing an instance of 'cv::Exception'如何使用dev/v4l/打开U盘并以正确方式打开
发布于 2019-01-22 22:20:01
你应该通过int id打开一个设备。尝试使用:
VideoCapture cap(0);实际上,正如documentation中所描述的那样,传递字符串OpenCV期望打开回放文件,例如MPEG文件。
这是有效的,但问题是打开的摄像头是集成摄像头,lsusb报告为:
Bus 001 Device 003: ID 1bcf:2b95 Sunplus Innovation Technology Inc. 它实际上是/dev/video0,通过以下链接:
/dev/v4l/by-path/pci-0000:00:14.0-usb-0:12:1.0-video-index0相反,列出的lsusb条目如下:
Bus 002 Device 005: ID 1ab2:0001 即外接摄像头,似乎未被识别为V4L设备。我不知道"SoftwareSuite by Common Vision Block“,所以我不知道这个软件是否能够像原始设备一样工作。
https://stackoverflow.com/questions/54309848
复制相似问题