From 0f1a9d5c8ccaec3916aa801f9ef02d82bd1af27f Mon Sep 17 00:00:00 2001 From: Andrei Radulescu Date: Sat, 28 Jun 2025 21:30:13 +0300 Subject: [PATCH] webcam: changes for comma zero (#35464) * Revert "webcam: remove other cv2 usage (#33236)" This reverts commit 0cade540158f1dadfb045f9fb40b06b7c48c545d. * Revert "remove cv2 usage (#33101)" This reverts commit 144e9e271c155c3a7702f62445ad2303ae057c50. * Revert "remove opencv-python-headless (#33082)" This reverts commit 488e08507a6a86921d9ef4546a36e3d6ef85a8f8. * webcam: set width, height, fps; flip image; use av reformat * 1280x720 @ 25fps --- tools/webcam/camera.py | 9 +++++++++ tools/webcam/camerad.py | 4 ++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/tools/webcam/camera.py b/tools/webcam/camera.py index 45f9379038..7926766c6f 100644 --- a/tools/webcam/camera.py +++ b/tools/webcam/camera.py @@ -11,7 +11,14 @@ class Camera: self.stream_type = stream_type self.cur_frame_id = 0 + print(f"Opening {cam_type_state} at {camera_id}") + self.cap = cv.VideoCapture(camera_id) + + self.cap.set(cv.CAP_PROP_FRAME_WIDTH, 1280.0) + self.cap.set(cv.CAP_PROP_FRAME_HEIGHT, 720.0) + self.cap.set(cv.CAP_PROP_FPS, 25.0) + self.W = self.cap.get(cv.CAP_PROP_FRAME_WIDTH) self.H = self.cap.get(cv.CAP_PROP_FRAME_HEIGHT) @@ -25,6 +32,8 @@ class Camera: ret, frame = self.cap.read() if not ret: break + # Rotate the frame 180 degrees (flip both axes) + frame = cv.flip(frame, -1) yuv = Camera.bgr2nv12(frame) yield yuv.data.tobytes() self.cap.release() diff --git a/tools/webcam/camerad.py b/tools/webcam/camerad.py index cb096dc00b..f1e70d948a 100755 --- a/tools/webcam/camerad.py +++ b/tools/webcam/camerad.py @@ -1,6 +1,7 @@ #!/usr/bin/env python3 import threading import os +import platform from collections import namedtuple from msgq.visionipc import VisionIpcServer, VisionStreamType @@ -30,8 +31,7 @@ class Camerad: self.cameras = [] for c in CAMERAS: - cam_device = f"/dev/video{c.cam_id}" - print(f"opening {c.msg_name} at {cam_device}") + cam_device = f"/dev/video{c.cam_id}" if platform.system() != "Darwin" else c.cam_id cam = Camera(c.msg_name, c.stream_type, cam_device) self.cameras.append(cam) self.vipc_server.create_buffers(c.stream_type, 20, cam.W, cam.H)