import cv2 # Open the webcam cap = cv2.VideoCapture(0) # Check if the webcam is successfully opened if not cap.isOpened(): print("Failed to open webcam.") exit(1) # Capture a frame from the webcam ret, frame = cap.read() # Check if the frame is captured successfully if not ret: print("Failed to capture frame.") exit(1) # Display the captured frame cv2.imshow("Webcam", frame) cv2.waitKey(0) # Release the webcam cap.release() cv2.destroyAllWindows()
Does the video device exist ?
If so, what is the user/group of the device.
If you are not running as root are you a member of the above group
I test this usermod as debian
ls /dev/video0 exist
and I try chmod +x file.py
and i also try the xrendr
xrandr --output HDMI1
sudo apt-get install python3-opencv libopencv-videoio-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
I also test this code
video_capture = cv2.VideoCapture(‘/dev/video0’, cv2.CAP_V4L2)
if not video_capture.isOpened():
print(“Unable to open video capture device”)
# Read a frame from the video capture
ret, frame = video_capture.read()
# Check if the frame was successfully read if not ret: print("Error reading frame from video capture") break # Display the frame on the screen cv2.imshow('Webcam', frame) # Exit the loop if 'q' key is pressed if cv2.waitKey(1) & 0xFF == ord('q'): break
[ WARN:0] global …/modules/videoio/src/cap_v4l.cpp (1004) tryIoctl VIDEOIO(V4L2:/dev/video0): select() timeout.
Error reading frame from video capture
pipeline = “v4l2src device=/dev/video0 ! videoconvert ! video/x-raw,format=BGR ! appsink”
cap = cv2.VideoCapture(pipeline, cv2.CAP_GSTREAMER)
if not cap.isOpened():
print(“Failed to open camera.”)
ret, frame = cap.read()
if not ret: print("Failed to capture frame.") break # Display the frame using imshow cv2.imshow("Webcam", frame) # Check for the 'q' key to exit if cv2.waitKey(1) & 0xFF == ord('q'): break
all of that work on ubuntu but not work on debian 9.9 beagle bone black
Ok just had a quick play.
This is using a newer OS version than you, clean install, just downloaded.
BeagleBoard.org Debian Bullseye Xfce Image 2023-05-18
I installed python3-opencv which pulled in the dependencies.
This is what I am running (see below). I have no display so can’t be sure what it is capturing, but I get no errors.
I had to add the cap.set() calls though to make it work. Just cv2.VideoCapture() on its own does not work.
#!/usr/bin/python3 import cv2 cap = cv2.VideoCapture("/dev/video0", cv2.CAP_V4L2) cap.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter_fourcc('M', 'J', 'P', 'G')) width = 320 height = 240 cap.set(cv2.CAP_PROP_FRAME_WIDTH, width) cap.set(cv2.CAP_PROP_FRAME_HEIGHT, height) if not cap.isOpened(): print('Unable to open video capture device') exit() while(True): ret,frame = cap.read() if not ret: print('Error reading frame from video capture') break else: print('Got frame') if cv2.waitKey(1)&0xff == ord('q'): break cap.release()
I suggest firstly you try setting the mode, and resolution as I have done. It that still fails I would suggest updating your OS.
Bullseye XFCE (with graphical desktop) for BeagleBone AI-64 via microSD card
it doesn’t work for beagle bone black
That’s totally expected, the BeagleBone Black and BeagleBone AI-64 use a different processor…
Grab an image from here, for your BeagleBone Black (am335x): Debian 11.x (Bullseye) - Monthly Snapshot - 2023-07-01
after that install we have to build opencv with cmake through cross compile