From 016028ff49dd9eebcb11d0a04b77c832660b1d7b Mon Sep 17 00:00:00 2001 From: Thomas Farstrike Date: Wed, 14 May 2025 10:06:11 +0200 Subject: [PATCH] Improve webcam --- c_mpos/src/webcam.c | 4 ++-- .../apps/com.example.camtest/assets/camtest.py | 8 ++++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/c_mpos/src/webcam.c b/c_mpos/src/webcam.c index 5b7085b9..585493c3 100644 --- a/c_mpos/src/webcam.c +++ b/c_mpos/src/webcam.c @@ -23,8 +23,8 @@ #define CAPTURE_HEIGHT 480 #define OUTPUT_WIDTH 240 // Resize to 240x240 #define OUTPUT_HEIGHT 240 -#define NUM_BUFFERS 2 // Revert to 2 buffers, as it achieved 2 captures -#define QUEUE_RETRIES 10 // Increase retries for robustness +#define NUM_BUFFERS 10 // Revert to 2 buffers, as it achieved 2 captures +#define QUEUE_RETRIES 5 // Increase retries for robustness #define QUEUE_RETRY_DELAY_US 200000 // 200ms delay between retries // Webcam object type diff --git a/internal_filesystem/apps/com.example.camtest/assets/camtest.py b/internal_filesystem/apps/com.example.camtest/assets/camtest.py index 4b0f1f37..ac0ad213 100644 --- a/internal_filesystem/apps/com.example.camtest/assets/camtest.py +++ b/internal_filesystem/apps/com.example.camtest/assets/camtest.py @@ -98,7 +98,7 @@ def try_capture(): new_cam_buffer = cam.capture_grayscale() elif cam.frame_available(): new_cam_buffer = cam.capture() # Returns memoryview - if len(new_cam_buffer): + if new_cam_buffer and len(new_cam_buffer): # print("Invalid buffer size:", len(new_cam_buffer)) # cam.free_buffer() # return @@ -200,7 +200,11 @@ class Webcam: # webcam.init() returns (obj, capture_grayscale, deinit) self.obj, self._capture_grayscale, self._deinit = webcam.init() def capture_grayscale(self): - return self._capture_grayscale(self.obj) + try: + return self._capture_grayscale(self.obj) + except Exception as e: + print(f"capture got exception {e}") + self.deinit() def deinit(self): return self._deinit(self.obj)