What is the current state of how to handle raw unprocessed images from a USB camera? I’m using a Leopard Imaging MT9M021C USB 3 camera. I can get an image using v4l2, but it just shows the bayer data. I’ve been reading on these forums as of about 6 months ago the nvcamerasrc processes the bayer data and outputs RGB, but it only works with the onboard camera - not USB cameras. Is this still the case?
I’ve also tried the gstreamer bayer2rgb element, but I get some assertion errors.
ubuntu@tegra-ubuntu:~$ gst-launch-1.0 v4l2src device=/dev/video1 ! bayer2rgb ! xvimagesink
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
(gst-launch-1.0:15727): GStreamer-CRITICAL **: gst_caps_get_structure: assertion 'index < GST_CAPS_LEN (caps)' failed
(gst-launch-1.0:15727): GStreamer-CRITICAL **: gst_structure_get_value: assertion 'structure != NULL' failed
(gst-launch-1.0:15727): GStreamer-CRITICAL **: gst_structure_set_value: assertion 'G_IS_VALUE (value)' failed
(gst-launch-1.0:15727): GStreamer-CRITICAL **: gst_structure_get_value: assertion 'structure != NULL' failed
(gst-launch-1.0:15727): GStreamer-CRITICAL **: gst_structure_set_value: assertion 'G_IS_VALUE (value)' failed
(gst-launch-1.0:15727): GStreamer-CRITICAL **: gst_structure_get_value: assertion 'structure != NULL' failed
(gst-launch-1.0:15727): GStreamer-CRITICAL **: gst_structure_set_value: assertion 'G_IS_VALUE (value)' failed
ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Internal data flow error.
Additional debug info:
gstbasesrc.c(2948): gst_base_src_loop (): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0:
streaming task paused, reason not-negotiated (-4)
Execution ended after 0:00:00.037026844
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...
ubuntu@tegra-ubuntu:~$ v4l2-ctl --list-formats-ext -d /dev/video1
ioctl: VIDIOC_ENUM_FMT
Index : 0
Type : Video Capture
Pixel Format: 'YUYV'
Name : YUV 4:2:2 (YUYV)
Size: Discrete 1280x720
Interval: Discrete 0.017s (60.000 fps)
Size: Discrete 800x460
Interval: Discrete 0.011s (90.000 fps)
Size: Discrete 640x480
Interval: Discrete 0.017s (60.000 fps)
Size: Discrete 1280x960
Interval: Discrete 0.017s (60.000 fps)
Here’s what it looks like when I just display the raw image without the bayer2rgb element.