Hello.
I have the Raspberry Pi 5 8 GB running Raspbian 64-bit (bookworm), which I'm trying to get to work with an Astra Pro HD Camera. Issue is I cannot get picamera2 or opencv to find the camera. After some research I've found USB camera support for the RPi 5 is quite limited as of now.
Changing hardware is sort of not an option, but does Ubuntu or 32-bit Raspbian work differently? I have to run ROS2, but this could be done in a Docker container. Being able to use the camera is essential.
Using OpenCVUsing picamera2
I have the Raspberry Pi 5 8 GB running Raspbian 64-bit (bookworm), which I'm trying to get to work with an Astra Pro HD Camera. Issue is I cannot get picamera2 or opencv to find the camera. After some research I've found USB camera support for the RPi 5 is quite limited as of now.
Code:
pi@raspberrypi:~ $ libcamera-hello --list-camerasNo cameras available!
Code:
pi@raspberrypi:~ $ v4l2-ctl --list-devicespispbe (platform:1000880000.pisp_be): /dev/video20 /dev/video21 /dev/video22 /dev/video23 /dev/video24 /dev/video25 /dev/video26 /dev/video27 /dev/video28 /dev/video29 /dev/video30 /dev/video31 /dev/video32 /dev/video33 /dev/video34 /dev/video35 /dev/video36 /dev/video37 /dev/media1 /dev/media2rpivid (platform:rpivid): /dev/video19 /dev/media0Astra Pro HD Camera: Astra Pro (usb-xhci-hcd.0-2.1): /dev/video0 /dev/video1 /dev/media3
Using OpenCV
Code:
import cv2camera_index = 0cam = cv2.VideoCapture(camera_index)while True: ret, image = cam.read() k = cv2.waitKey(1) if k != -1: breakcv2.imwrite("./testimage.jpg", image)cam.release()cv2.destroyAllWindows()
Code:
(.venv) pi@raspberrypi:~/robot $ python3 test_camera.py [ WARN:0@0.011] global cap_v4l.cpp:997 open VIDEOIO(V4L2:/dev/video0): can't open camera by index[ WARN:0@0.011] global obsensor_stream_channel_v4l2.cpp:82 xioctl ioctl: fd=-1, req=-2140645888[ WARN:0@0.011] global obsensor_stream_channel_v4l2.cpp:138 queryUvcDeviceInfoList ioctl error return: 9[ WARN:0@0.011] global obsensor_stream_channel_v4l2.cpp:82 xioctl ioctl: fd=-1, req=-2140645888[ WARN:0@0.011] global obsensor_stream_channel_v4l2.cpp:138 queryUvcDeviceInfoList ioctl error return: 9[ WARN:0@0.011] global obsensor_stream_channel_v4l2.cpp:82 xioctl ioctl: fd=-1, req=-2140645888[ WARN:0@0.011] global obsensor_stream_channel_v4l2.cpp:138 queryUvcDeviceInfoList ioctl error return: 9[ WARN:0@0.011] global obsensor_stream_channel_v4l2.cpp:82 xioctl ioctl: fd=-1, req=-2140645888[ WARN:0@0.011] global obsensor_stream_channel_v4l2.cpp:138 queryUvcDeviceInfoList ioctl error return: 9[ WARN:0@0.012] global obsensor_stream_channel_v4l2.cpp:82 xioctl ioctl: fd=-1, req=-2140645888[ WARN:0@0.012] global obsensor_stream_channel_v4l2.cpp:138 queryUvcDeviceInfoList ioctl error return: 9[ WARN:0@0.012] global obsensor_stream_channel_v4l2.cpp:82 xioctl ioctl: fd=-1, req=-2140645888[ WARN:0@0.012] global obsensor_stream_channel_v4l2.cpp:138 queryUvcDeviceInfoList ioctl error return: 9[ WARN:0@0.012] global obsensor_stream_channel_v4l2.cpp:82 xioctl ioctl: fd=-1, req=-2140645888[ WARN:0@0.012] global obsensor_stream_channel_v4l2.cpp:138 queryUvcDeviceInfoList ioctl error return: 9[ WARN:0@0.012] global obsensor_stream_channel_v4l2.cpp:82 xioctl ioctl: fd=-1, req=-2140645888[ WARN:0@0.012] global obsensor_stream_channel_v4l2.cpp:138 queryUvcDeviceInfoList ioctl error return: 9[ WARN:0@0.012] global obsensor_stream_channel_v4l2.cpp:82 xioctl ioctl: fd=-1, req=-2140645888[ WARN:0@0.012] global obsensor_stream_channel_v4l2.cpp:138 queryUvcDeviceInfoList ioctl error return: 9[ WARN:0@0.012] global obsensor_stream_channel_v4l2.cpp:82 xioctl ioctl: fd=-1, req=-2140645888[ WARN:0@0.012] global obsensor_stream_channel_v4l2.cpp:138 queryUvcDeviceInfoList ioctl error return: 9[ WARN:0@0.012] global obsensor_stream_channel_v4l2.cpp:82 xioctl ioctl: fd=-1, req=-2140645888[ WARN:0@0.012] global obsensor_stream_channel_v4l2.cpp:138 queryUvcDeviceInfoList ioctl error return: 9[ WARN:0@0.012] global obsensor_stream_channel_v4l2.cpp:82 xioctl ioctl: fd=-1, req=-2140645888[ WARN:0@0.012] global obsensor_stream_channel_v4l2.cpp:138 queryUvcDeviceInfoList ioctl error return: 9[ WARN:0@0.012] global obsensor_stream_channel_v4l2.cpp:82 xioctl ioctl: fd=-1, req=-2140645888[ WARN:0@0.012] global obsensor_stream_channel_v4l2.cpp:138 queryUvcDeviceInfoList ioctl error return: 9[ WARN:0@0.012] global obsensor_stream_channel_v4l2.cpp:82 xioctl ioctl: fd=-1, req=-2140645888[ WARN:0@0.012] global obsensor_stream_channel_v4l2.cpp:138 queryUvcDeviceInfoList ioctl error return: 9[ WARN:0@0.012] global obsensor_stream_channel_v4l2.cpp:82 xioctl ioctl: fd=-1, req=-2140645888[ WARN:0@0.012] global obsensor_stream_channel_v4l2.cpp:138 queryUvcDeviceInfoList ioctl error return: 9[ WARN:0@0.012] global obsensor_stream_channel_v4l2.cpp:82 xioctl ioctl: fd=-1, req=-2140645888[ WARN:0@0.012] global obsensor_stream_channel_v4l2.cpp:138 queryUvcDeviceInfoList ioctl error return: 9[ WARN:0@0.012] global obsensor_stream_channel_v4l2.cpp:82 xioctl ioctl: fd=-1, req=-2140645888[ WARN:0@0.012] global obsensor_stream_channel_v4l2.cpp:138 queryUvcDeviceInfoList ioctl error return: 9[ WARN:0@0.012] global obsensor_stream_channel_v4l2.cpp:82 xioctl ioctl: fd=-1, req=-2140645888[ WARN:0@0.012] global obsensor_stream_channel_v4l2.cpp:138 queryUvcDeviceInfoList ioctl error return: 9[ WARN:0@0.012] global obsensor_stream_channel_v4l2.cpp:82 xioctl ioctl: fd=-1, req=-2140645888[ WARN:0@0.012] global obsensor_stream_channel_v4l2.cpp:138 queryUvcDeviceInfoList ioctl error return: 9[ERROR:0@0.012] global obsensor_uvc_stream_channel.cpp:159 getStreamChannelGroup Camera index out of range^CTraceback (most recent call last): File "/home/pi/robot/test_camera.py", line 8, in <module> ret, image = cam.read() ^^^^^^^^^^KeyboardInterrupt
Code:
from picamera2 import Picamera2, Previewpicam2 = Picamera2()config = picam2.create_preview_configuration({"format": "MJPEG"})picam2.configure(config)picam2.start_preview(Preview.QT)picam2.start()jpeg_buffer = picam2.capture_buffer()
Code:
(.venv) pi@raspberrypi:~/robot $ /usr/bin/python /home/pi/robot/test_camera2.py[1:50:28.703419437] [6022] INFO Camera camera_manager.cpp:284 libcamera v0.1.0+118-563cd78e[1:50:28.707094992] [6025] ERROR MediaDevice media_device.cpp:483 /dev/media0[]: Failed to open media device at /dev/media0: Permission denied[1:50:28.707132900] [6025] INFO DeviceEnumerator device_enumerator.cpp:218 Unable to populate media device /dev/media0 (Permission denied), skipping[1:50:28.707145011] [6025] WARN DeviceEnumerator device_enumerator_udev.cpp:174 Failed to add device for '/sys/devices/platform/axi/1000800000.codec/media0', skipping[1:50:28.707233270] [6025] ERROR MediaDevice media_device.cpp:483 /dev/media1[]: Failed to open media device at /dev/media1: Permission denied[1:50:28.707245529] [6025] INFO DeviceEnumerator device_enumerator.cpp:218 Unable to populate media device /dev/media1 (Permission denied), skipping[1:50:28.707254640] [6025] WARN DeviceEnumerator device_enumerator_udev.cpp:174 Failed to add device for '/sys/devices/platform/axi/1000880000.pisp_be/media1', skipping[1:50:28.707301048] [6025] ERROR MediaDevice media_device.cpp:483 /dev/media2[]: Failed to open media device at /dev/media2: Permission denied[1:50:28.707312566] [6025] INFO DeviceEnumerator device_enumerator.cpp:218 Unable to populate media device /dev/media2 (Permission denied), skipping[1:50:28.707321492] [6025] WARN DeviceEnumerator device_enumerator_udev.cpp:174 Failed to add device for '/sys/devices/platform/axi/1000880000.pisp_be/media2', skippingTraceback (most recent call last): File "/home/pi/robot/test_camera2.py", line 3, in <module> picam2 = Picamera2() ^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/picamera2/picamera2.py", line 242, in __init__ camera_num = self.global_camera_info()[camera_num]['Num'] ~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^IndexError: list index out of rangeException ignored in: <function Picamera2.__del__ at 0x7fff9cd50180>Traceback (most recent call last): File "/usr/lib/python3/dist-packages/picamera2/picamera2.py", line 404, in __del__ self.close() File "/usr/lib/python3/dist-packages/picamera2/picamera2.py", line 604, in close if self._preview: ^^^^^^^^^^^^^AttributeError: 'Picamera2' object has no attribute '_preview'
Statistics: Posted by bscstudent — Wed Feb 07, 2024 3:17 pm