USB Webcam Not Working on Jetson Nano for OpenCV/TensorFlow Object Detection

Hello guys, I am trying to set up a USB webcam on my NVIDIA Jetson Nano to perform real-time video analytics using OpenCV and TensorFlow, I have installed OpenCV and TensorFlow on Ubuntu, connected a USB webcam to the Jetson Nano, wrote a Python script to capture video frames and perform object detection.
But I keep getting the error
[ WARN:0] global /tmp/pip-req-build-1234abcd/opencv/modules/videoio/src/cap_v4l.cpp (890) open VIDEOIO(V4L2:/dev/video0): can't open camera by index



This is my code snippet πŸ‘‡

import cv2
import tensorflow as tf

# Load the pre-trained object detection model
model = tf.saved_model.load('ssd_mobilenet_v2/saved_model')

# Open the USB webcam
cap = cv2.VideoCapture(0)

while cap.isOpened():
    ret, frame = cap.read()
    if not ret:
        print("Failed to capture image")
        break
    
    # Preprocess the frame for the model
    input_tensor = tf.convert_to_tensor(frame)
    input_tensor = input_tensor[tf.newaxis, ...]

    # Perform object detection
    detections = model(input_tensor)

    # Display the frame
    cv2.imshow('Frame', frame)
    
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

@Middleware & OS @Helper
Solution
v4l2-ctl --list-devices
v4l2-ctl --device=/dev/video0 --stream-mmap=3 --stream-count=10 

If the above steps don't help, try running a simple OpenCV script to verify if OpenCV can access the camera:

import cv2

cap = cv2.VideoCapture(0)

if not cap.isOpened():
    print("Cannot open camera")
    exit()

while True:
    ret, frame = cap.read()
    if not ret:
        print("Can't receive frame (stream end?). Exiting ...")
        break
    cv2.imshow('frame', frame)
    if cv2.waitKey(1) == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()
Was this page helpful?