【发布时间】:2019-06-16 00:23:53
【问题描述】:
我想在 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 打开它:
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/ 以正确的方式打开它?
【问题讨论】:
标签: c++ linux opencv camera usb