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
, указывающий на камеру.
Если вы посмотрите на 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 интерфейса камеры, как указано » здесь).