Hi All,
I am trying Edge Impulse on Raspberry Pi 4, I am using USB camera, looks like the edge impulse is unable to detect the camera. Not sure if anyone faced similar issues. Can someone pls help to if someone resolved this issue?
Hi All,
I am trying Edge Impulse on Raspberry Pi 4, I am using USB camera, looks like the edge impulse is unable to detect the camera. Not sure if anyone faced similar issues. Can someone pls help to if someone resolved this issue?
Hi, Thanks for your quick response. Pls find below the version and the o/p from verbose.
pi@raspberrypi:~ $ edge-impulse-linux --verbose
Edge Impulse Linux client v1.2.2
[SER] Using microphone hw:0,0
[GST] Found devices: []
Failed to initialize linux tool Error: Cannot find any webcams, run this command with --disable-camera to skip selection
at /usr/lib/node_modules/edge-impulse-linux/build/cli/linux/linux.js:351:23
at processTicksAndRejections (node:internal/process/task_queues:94:5)
Just to add, I can confirm that USB camera is working as expected.
pi@raspberrypi:~ $ edge-impulse-linux --verbose
Edge Impulse Linux client v1.2.2
[SER] Using microphone hw:0,0
[GST] Found devices: []
Failed to initialize linux tool Error: Cannot find any webcams, run this command with --disable-camera to skip selection
at /usr/lib/node_modules/edge-impulse-linux/build/cli/linux/linux.js:351:23
at processTicksAndRejections (node:internal/process/task_queues:94:5)
pi@raspberrypi:~ $ fswebcam /tmp/a.jpg
— Opening /dev/video0…
Trying source module v4l2…
/dev/video0 opened.
No input was specified, using the first.
Adjusting resolution from 384x288 to 1280x720.
— Capturing frame…
GD Warning: gd-jpeg: JPEG library reports unrecoverable error: Not a JPEG file: starts with 0xc4 0x93Captured frame in 0.00 seconds.
— Processing captured image…
Writing JPEG image to ‘/tmp/a.jpg’.
@MKMani Sorry for the late reply - could you post the output of gst-device-monitor-1.0
?
Also, does the fswebcam
command actually yield a useful picture?
— Capturing frame…
GD Warning: gd-jpeg: JPEG library reports unrecoverable error: Not a JPEG file: starts with 0xc4 0x93Captured frame in 0.00 seconds.
Worries me there!
Hi,
Thanks for your response. Yes fswebcam does produce a valid image. I see your point regarding the error message.
Pls find below the o/p device monitor command.
pi@raspberrypi:~ $ gst-device-monitor-1.0
Probing devices…
Device found:
name : USB : USB
class : Video/Source
caps : image/jpeg, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1;
properties:
udev-probed = true
device.bus_path = platform-fd500000.pcie-pci-0000:01:00.0-usb-0:1.2:1.0
sysfs.path = /sys/devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.2/1-1.2:1.0/video4linux/video0
device.bus = usb
device.subsystem = video4linux
device.vendor.id = 1b3f
device.vendor.name = "USB\\x20\\x20\\x20\\x20"
device.product.id = 2002
device.product.name = "USB\ \ \ \ \ \ \ \ \ \ \ :\ USB"
device.serial = USB_USB_Demo_1.00
device.capabilities = :capture:
device.api = v4l2
device.path = /dev/video0
v4l2.device.driver = uvcvideo
v4l2.device.card = "USB\ \ \ \ \ \ \ \ \ \ \ :\ USB\ \ \ \ \ \ \ \ \ \ \ \ "
v4l2.device.bus_info = usb-0000:01:00.0-1.2
v4l2.device.version = 328787 (0x00050453)
v4l2.device.capabilities = 2225078273 (0x84a00001)
v4l2.device.device_caps = 69206017 (0x04200001)
gst-launch-1.0 v4l2src ! ...
Device found:
name : bcm2835-isp
class : Video/Sink
caps : video/x-raw, format=(string)YUY2, width=(int)[ 64, 16384, 2 ], height=(int)[ 64, 16384, 2 ], interlace-mode=(string)progressive, colorimetry=(string){ bt601 };
video/x-raw, format=(string)UYVY, width=(int)[ 64, 16384, 2 ], height=(int)[ 64, 16384, 2 ], interlace-mode=(string)progressive, colorimetry=(string){ bt601 };
video/x-raw, format=(string)I420, width=(int)[ 64, 16384, 2 ], height=(int)[ 64, 16384, 2 ], interlace-mode=(string)progressive, colorimetry=(string){ bt601 };
video/x-raw, format=(string)YV12, width=(int)[ 64, 16384, 2 ], height=(int)[ 64, 16384, 2 ], interlace-mode=(string)progressive, colorimetry=(string){ bt601 };
video/x-raw, format=(string)BGRA, width=(int)[ 64, 16384 ], height=(int)[ 64, 16384 ], interlace-mode=(string)progressive, colorimetry=(string){ sRGB };
video/x-raw, format=(string)BGR, width=(int)[ 64, 16384 ], height=(int)[ 64, 16384 ], interlace-mode=(string)progressive, colorimetry=(string){ sRGB };
video/x-raw, format=(string)RGB, width=(int)[ 64, 16384 ], height=(int)[ 64, 16384 ], interlace-mode=(string)progressive, colorimetry=(string){ sRGB };
video/x-raw, format=(string)NV21, width=(int)[ 64, 16384, 2 ], height=(int)[ 64, 16384, 2 ], interlace-mode=(string)progressive, colorimetry=(string){ bt601 };
video/x-raw, format=(string)NV12, width=(int)[ 64, 16384, 2 ], height=(int)[ 64, 16384, 2 ], interlace-mode=(string)progressive, colorimetry=(string){ bt601 };
video/x-raw, format=(string)RGB16, width=(int)[ 64, 16384 ], height=(int)[ 64, 16384 ], interlace-mode=(string)progressive, colorimetry=(string){ sRGB };
video/x-bayer, format=(string)grbg, width=(int)[ 64, 16384, 2 ], height=(int)[ 64, 16384, 2 ], colorimetry=(string){ 1:1:0:0 };
video/x-bayer, format=(string)gbrg, width=(int)[ 64, 16384, 2 ], height=(int)[ 64, 16384, 2 ], colorimetry=(string){ 1:1:0:0 };
video/x-bayer, format=(string)rggb, width=(int)[ 64, 16384, 2 ], height=(int)[ 64, 16384, 2 ], colorimetry=(string){ 1:1:0:0 };
video/x-bayer, format=(string)bggr, width=(int)[ 64, 16384, 2 ], height=(int)[ 64, 16384, 2 ], colorimetry=(string){ 1:1:0:0 };
video/x-raw, format=(string)GRAY8, width=(int)[ 64, 16384, 2 ], height=(int)[ 64, 16384, 2 ], interlace-mode=(string)progressive, colorimetry=(string){ 2:0:0:0 };
video/x-raw, format=(string)YVYU, width=(int)[ 64, 16384, 2 ], height=(int)[ 64, 16384, 2 ], interlace-mode=(string)progressive, colorimetry=(string){ bt601 };
video/x-raw, format=(string)GRAY16_LE, width=(int)[ 64, 16384, 2 ], height=(int)[ 64, 16384, 2 ], interlace-mode=(string)progressive, colorimetry=(string){ 2:0:0:0 };
properties:
udev-probed = true
device.bus_path = platform-bcm2835-isp
sysfs.path = /sys/devices/platform/soc/fe00b840.mailbox/bcm2835-isp/video4linux/video13
device.subsystem = video4linux
device.product.name = bcm2835-isp
device.capabilities = :video_output:
device.api = v4l2
device.path = /dev/video13
v4l2.device.driver = bcm2835-isp
v4l2.device.card = bcm2835-isp
v4l2.device.bus_info = platform:bcm2835-isp
v4l2.device.version = 328787 (0x00050453)
v4l2.device.capabilities = 2216689666 (0x84200002)
v4l2.device.device_caps = 69206018 (0x04200002)
gst-launch-1.0 ... ! v4l2sink device=/dev/video13
Device found:
name : bcm2835-isp
class : Video/Source
caps : video/x-raw, format=(string)YUY2, width=(int)[ 64, 16384, 2 ], height=(int)[ 64, 16384, 2 ], framerate=(fraction)[ 0/1, 2147483647/1 ];
video/x-raw, format=(string)UYVY, width=(int)[ 64, 16384, 2 ], height=(int)[ 64, 16384, 2 ], framerate=(fraction)[ 0/1, 2147483647/1 ];
video/x-raw, format=(string)I420, width=(int)[ 64, 16384, 2 ], height=(int)[ 64, 16384, 2 ], framerate=(fraction)[ 0/1, 2147483647/1 ];
video/x-raw, format=(string)YV12, width=(int)[ 64, 16384, 2 ], height=(int)[ 64, 16384, 2 ], framerate=(fraction)[ 0/1, 2147483647/1 ];
video/x-raw, format=(string)BGRA, width=(int)[ 64, 16384 ], height=(int)[ 64, 16384 ], framerate=(fraction)[ 0/1, 2147483647/1 ];
video/x-raw, format=(string)BGR, width=(int)[ 64, 16384 ], height=(int)[ 64, 16384 ], framerate=(fraction)[ 0/1, 2147483647/1 ];
video/x-raw, format=(string)RGB, width=(int)[ 64, 16384 ], height=(int)[ 64, 16384 ], framerate=(fraction)[ 0/1, 2147483647/1 ];
video/x-raw, format=(string)NV21, width=(int)[ 64, 16384, 2 ], height=(int)[ 64, 16384, 2 ], framerate=(fraction)[ 0/1, 2147483647/1 ];
video/x-raw, format=(string)NV12, width=(int)[ 64, 16384, 2 ], height=(int)[ 64, 16384, 2 ], framerate=(fraction)[ 0/1, 2147483647/1 ];
video/x-raw, format=(string)RGB16, width=(int)[ 64, 16384 ], height=(int)[ 64, 16384 ], framerate=(fraction)[ 0/1, 2147483647/1 ];
video/x-raw, format=(string)YVYU, width=(int)[ 64, 16384, 2 ], height=(int)[ 64, 16384, 2 ], framerate=(fraction)[ 0/1, 2147483647/1 ];
properties:
udev-probed = true
device.bus_path = platform-bcm2835-isp
sysfs.path = /sys/devices/platform/soc/fe00b840.mailbox/bcm2835-isp/video4linux/video14
device.subsystem = video4linux
device.product.name = bcm2835-isp
device.capabilities = :capture:
device.api = v4l2
device.path = /dev/video14
v4l2.device.driver = bcm2835-isp
v4l2.device.card = bcm2835-isp
v4l2.device.bus_info = platform:bcm2835-isp
v4l2.device.version = 328787 (0x00050453)
v4l2.device.capabilities = 2216689665 (0x84200001)
v4l2.device.device_caps = 69206017 (0x04200001)
gst-launch-1.0 v4l2src device=/dev/video14 ! ...
Device found:
name : bcm2835-isp
class : Video/Source
caps : video/x-raw, format=(string)YUY2, width=(int)[ 64, 16384, 2 ], height=(int)[ 64, 16384, 2 ], framerate=(fraction)[ 0/1, 2147483647/1 ];
video/x-raw, format=(string)UYVY, width=(int)[ 64, 16384, 2 ], height=(int)[ 64, 16384, 2 ], framerate=(fraction)[ 0/1, 2147483647/1 ];
video/x-raw, format=(string)I420, width=(int)[ 64, 16384, 2 ], height=(int)[ 64, 16384, 2 ], framerate=(fraction)[ 0/1, 2147483647/1 ];
video/x-raw, format=(string)YV12, width=(int)[ 64, 16384, 2 ], height=(int)[ 64, 16384, 2 ], framerate=(fraction)[ 0/1, 2147483647/1 ];
video/x-raw, format=(string)NV21, width=(int)[ 64, 16384, 2 ], height=(int)[ 64, 16384, 2 ], framerate=(fraction)[ 0/1, 2147483647/1 ];
video/x-raw, format=(string)NV12, width=(int)[ 64, 16384, 2 ], height=(int)[ 64, 16384, 2 ], framerate=(fraction)[ 0/1, 2147483647/1 ];
video/x-raw, format=(string)YVYU, width=(int)[ 64, 16384, 2 ], height=(int)[ 64, 16384, 2 ], framerate=(fraction)[ 0/1, 2147483647/1 ];
properties:
udev-probed = true
device.bus_path = platform-bcm2835-isp
sysfs.path = /sys/devices/platform/soc/fe00b840.mailbox/bcm2835-isp/video4linux/video15
device.subsystem = video4linux
device.product.name = bcm2835-isp
device.capabilities = :capture:
device.api = v4l2
device.path = /dev/video15
v4l2.device.driver = bcm2835-isp
v4l2.device.card = bcm2835-isp
v4l2.device.bus_info = platform:bcm2835-isp
v4l2.device.version = 328787 (0x00050453)
v4l2.device.capabilities = 2216689665 (0x84200001)
v4l2.device.device_caps = 69206017 (0x04200001)
gst-launch-1.0 v4l2src device=/dev/video15 ! ...
@MKMani So the issue is that your camera is advertising just camera capabilities, not video capabilities:
caps : image/jpeg, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1;
Rather than video/x-raw
which we expected. I’ve tested this out with a Logitech cam and we can set up a pipeline for the image/jpeg
usecase too, we’ll release a 1.2.4 patch release for the Linux CLI later today.
edit: Patch has now been released, thanks a lot for the debug logs!
Thanks for your great support, Let me test the patch release.
Thanks Jan, I am able to see that the camera is now connected.
any further help, I have a similar problem but am using the latest version ; the camera can capture images using fswebcam
pi@paperbox:~ $ edge-impulse-linux
Edge Impulse Linux client v1.3.0
[SER] Using microphone hw:0,0
Failed to initialize linux tool Error: Cannot find any webcams, run this command with --disable-camera to skip selection
at /usr/lib/node_modules/edge-impulse-linux/build/cli/linux/linux.js:423:23
camera detected
pi@paperbox:~ $ gst-device-monitor-1.0
Probing devices...
[0:28:14.981454675] [1222] INFO Camera camera_manager.cpp:293 libcamera v0.0.0+3156-f4070274
[0:28:14.994875163] [1222] WARN V4L2 v4l2_pixelformat.cpp:283 Unsupported V4L2 pixel format H264
Device found:
name : /base/scb/pcie@7d500000/pci@1,0/usb@1,0-1.4:1.0-12d1:4321
class : Source/Video
caps : image/jpeg, width=(int)640, height=(int)360;
image/jpeg, width=(int)640, height=(int)480;
image/jpeg, width=(int)1280, height=(int)720;
image/jpeg, width=(int)1920, height=(int)1080;
video/x-raw, format=(string)YUY2, width=(int)640, height=(int)360;
video/x-raw, format=(string)YUY2, width=(int)640, height=(int)480;
gst-launch-1.0 libcamerasrc camera-name="/base/scb/pcie\@7d500000/pci\@1\,0/usb\@1\,0-1.4:1.0-12d1:4321" ! ...
Hi @tricia,
What webcam are you using? I just checked that it works on my Pi with Logitech Brio and the client v1.3.0.
Best,
Shawn