Откройте USB-камеру с помощью OpenCV - PullRequest
0 голосов
/ 22 января 2019

Я хочу открыть USB-камеру с OpenCV в C ++, работающем в Linux Mint 18.3. Камера подключена и отлично работает с SoftwareSuite от Common Vision Blocks. С - 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

Итак, я хочу открыть 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/?

1 Ответ

0 голосов
/ 22 января 2019

Вы должны открыть устройство по 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.Я не знаю «SoftwareSuite by Common Vision Blocks», поэтому я понятия не имею, может ли это программное обеспечение работать с ним как с устройством RAW.

...