diff --git a/src/lerobot/cameras/opencv/camera_opencv.py b/src/lerobot/cameras/opencv/camera_opencv.py index fd99922a..1d7a1645 100644 --- a/src/lerobot/cameras/opencv/camera_opencv.py +++ b/src/lerobot/cameras/opencv/camera_opencv.py @@ -18,12 +18,16 @@ Provides the OpenCVCamera class for capturing frames from cameras using OpenCV. import logging import math +import os import platform import time from pathlib import Path from threading import Event, Lock, Thread from typing import Any, Dict, List +# Fix MSMF hardware transform compatibility for Windows before importing cv2 +if platform.system() == "Windows" and "OPENCV_VIDEOIO_MSMF_ENABLE_HW_TRANSFORMS" not in os.environ: + os.environ["OPENCV_VIDEOIO_MSMF_ENABLE_HW_TRANSFORMS"] = "0" import cv2 import numpy as np diff --git a/src/lerobot/cameras/utils.py b/src/lerobot/cameras/utils.py index f8bbd6e7..1eb69840 100644 --- a/src/lerobot/cameras/utils.py +++ b/src/lerobot/cameras/utils.py @@ -60,6 +60,8 @@ def get_cv2_backend() -> int: import cv2 if platform.system() == "Windows": - return cv2.CAP_AVFOUNDATION - else: + return cv2.CAP_MSMF # Use MSMF for Windows instead of AVFOUNDATION + # elif platform.system() == "Darwin": # macOS + # return cv2.CAP_AVFOUNDATION + else: # Linux and others return cv2.CAP_ANY