diff --git a/src/lerobot/cameras/opencv/camera_opencv.py b/src/lerobot/cameras/opencv/camera_opencv.py index b1043ba64b9..fa534fac29e 100644 --- a/src/lerobot/cameras/opencv/camera_opencv.py +++ b/src/lerobot/cameras/opencv/camera_opencv.py @@ -308,7 +308,7 @@ def find_cameras() -> list[dict[str, Any]]: targets_to_scan = [int(i) for i in range(MAX_OPENCV_INDEX)] for target in targets_to_scan: - camera = cv2.VideoCapture(target) + camera = cv2.VideoCapture(target, get_cv2_backend()) if camera.isOpened(): default_width = int(camera.get(cv2.CAP_PROP_FRAME_WIDTH)) default_height = int(camera.get(cv2.CAP_PROP_FRAME_HEIGHT)) diff --git a/src/lerobot/cameras/utils.py b/src/lerobot/cameras/utils.py index 1b2d386d6b3..64888615f05 100644 --- a/src/lerobot/cameras/utils.py +++ b/src/lerobot/cameras/utils.py @@ -72,5 +72,7 @@ def get_cv2_backend() -> int: return int(cv2.CAP_MSMF) # Use MSMF for Windows instead of AVFOUNDATION # elif platform.system() == "Darwin": # macOS # return cv2.CAP_AVFOUNDATION - else: # Linux and others + elif platform.system() == "Linux": + return int(cv2.CAP_V4L2) + else: # others return int(cv2.CAP_ANY)