Включение захвата видео с камеры в Ubuntu 20.04

Ubuntu 20.04 имеет версию ARM64, которая должна работать "из коробки" на Raspberry Pi 4, и это действительно так. . Однако я не могу понять, как получить видео с родной камеры, которая подключается с помощью ленточного кабеля. Я использую ROS2 / OpenCV для доступа к камере следующим образом:

import cv2 as cv
cap = cv.VideoCapture(10)
print( cap.isOpened() )

и всегда получаю False . Я ввожу номер устройства 10 в VideoCapture () , поскольку нет / dev / video0 , только / dev / video10 , / dev / video11 и т. Д. Нужно ли каким-то образом монтировать камеру, прежде чем она заработает?

Ниже приведены полные ошибки, которые я получаю из моего кода:

[ WARN:0] global ../modules/videoio/src/cap_gstreamer.cpp (1758) handleMessage OpenCV | GStreamer warning: Embedded video playback halted; module v4l2src0 reported: Device '/dev/video10' is not a capture device.
[ WARN:0] global ../modules/videoio/src/cap_gstreamer.cpp (888) open OpenCV | GStreamer warning: unable to start pipeline
[ WARN:0] global ../modules/videoio/src/cap_gstreamer.cpp (480) isPipelinePlaying OpenCV | GStreamer warning: GStreamer: pipeline have not been created
[ WARN:0] global ../modules/videoio/src/cap_v4l.cpp (887) open VIDEOIO(V4L2:/dev/video10): can't open camera by index

Ключевой момент, по-видимому, таков: Устройство '/ dev / video10' не является устройством захвата . Так как же мне получить устройство захвата?

Итак, я думаю, что основная проблема заключается в том, как заставить Raspberry Pi создать файл / dev / video0 , указывающий на камеру.

0
задан 8 August 2020 в 19:23

1 ответ

Если вы посмотрите на dmesg на вашем RPi, вы должны увидеть что-то вроде этого:

$ dmesg
...
[    3.892570] videodev: Linux video capture interface: v2.00
[    3.924273] snd_bcm2835: module is from the staging directory, the quality is unknown, you have been warned.
[    3.944425] bcm2835_audio bcm2835_audio: card created with 4 channels
[    3.954828] bcm2835_audio bcm2835_audio: card created with 4 channels
[    3.994725] bcm2835_mmal_vchiq: module is from the staging directory, the quality is unknown, you have been warned.
[    3.994784] bcm2835_mmal_vchiq: module is from the staging directory, the quality is unknown, you have been warned.
[    4.001545] bcm2835_mmal_vchiq: module is from the staging directory, the quality is unknown, you have been warned.
[    4.027570] bcm2835_v4l2: module is from the staging directory, the quality is unknown, you have been warned.
[    4.028170] bcm2835_codec: module is from the staging directory, the quality is unknown, you have been warned.
[    4.029063] bcm2835_isp: module is from the staging directory, the quality is unknown, you have been warned.
[    4.055371] bcm2835-isp bcm2835-isp: Device node output[0] registered as /dev/video13
[    4.055899] bcm2835-isp bcm2835-isp: Device node capture[0] registered as /dev/video14
[    4.056430] bcm2835-isp bcm2835-isp: Device node capture[1] registered as /dev/video15
[    4.059344] bcm2835-isp bcm2835-isp: Device node stats[2] registered as /dev/video16
[    4.059378] bcm2835-isp bcm2835-isp: Register output node 0 with media controller
[    4.059398] bcm2835-isp bcm2835-isp: Register capture node 1 with media controller
[    4.059414] bcm2835-isp bcm2835-isp: Register capture node 2 with media controller
[    4.059427] bcm2835-isp bcm2835-isp: Register capture node 3 with media controller
[    4.059529] bcm2835-codec bcm2835-codec: Device registered as /dev/video10
[    4.059569] bcm2835-codec bcm2835-codec: Loaded V4L2 decode
[    4.068348] bcm2835-codec bcm2835-codec: Device registered as /dev/video11
[    4.068389] bcm2835-codec bcm2835-codec: Loaded V4L2 encode
[    4.071323] bcm2835-isp bcm2835-isp: Loaded V4L2 bcm2835-isp
[    4.078793] bcm2835-codec bcm2835-codec: Device registered as /dev/video12
[    4.078836] bcm2835-codec bcm2835-codec: Loaded V4L2 isp
...

Это говорит мне, что инициализировано несколько видеоустройств - некоторые для ввода/захвата, некоторые для вывода, некоторые в качестве DSP для кодирования/декодирования (H.264 на RPi4, плюс MPEG2/MPEG4/VC1 на более ранних версиях RPi).

Я предлагаю вам попробовать это с устройством, которое упоминается как «Захват узла устройства [x]», в моем случае /dev/video14 или ...15 (RPi4 имеет 2 интерфейса камеры, как указано » здесь).

2
ответ дан 11 November 2020 в 15:53

Другие вопросы по тегам:

Похожие вопросы: