繁体   English   中英

使用OpenCV打开USB摄像头

[英]Open USB Camera using OpenCV

我想在Linux Mint 18.3上用C ++操作打开带有OpenCV的USB摄像机。 相机已插入并与Common Vision Blocks的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'

如何打开USB相机并以正确的方式使用dev/v4l/打开它?

您应该通过int id打开设备。 尝试:

VideoCapture cap(0);

实际上,传递字符串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设备。 我不知道“ Common Vision Blocks提供的SoftwareSuite”,所以我不知道该软件是否能够作为RAW设备使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM