From b03444ff6be3c7c16d1e14d724914ef23ffc688f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Br=C3=BCns?= Date: Sun, 20 Feb 2022 07:46:21 +0100 Subject: [PATCH 4/4] OpenCV4 support --- src/horus/engine/driver/camera.py | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/src/horus/engine/driver/camera.py b/src/horus/engine/driver/camera.py index ca937c1..e7a3fda 100644 --- a/src/horus/engine/driver/camera.py +++ b/src/horus/engine/driver/camera.py @@ -166,7 +166,8 @@ class Camera(object): brightness = self.get_brightness() if brightness is not None: c_bri = brightness >= 2 - except: + except Exception as e: + logger.error(repr(e)) raise WrongCamera() if not c_exp or not c_bri: @@ -242,7 +243,7 @@ class Camera(object): ctl.set_val(self._line(value, 0, self._max_brightness, ctl.min, ctl.max)) else: value = int(value) / self._max_brightness - ret = self._capture.set(cv2.cv.CV_CAP_PROP_BRIGHTNESS, value) + ret = self._capture.set(cv2.CAP_PROP_BRIGHTNESS, value) if system == 'Linux' and ret: raise InputOutputError() self._updating = False @@ -257,7 +258,7 @@ class Camera(object): ctl.set_val(self._line(value, 0, self._max_contrast, ctl.min, ctl.max)) else: value = int(value) / self._max_contrast - ret = self._capture.set(cv2.cv.CV_CAP_PROP_CONTRAST, value) + ret = self._capture.set(cv2.CAP_PROP_CONTRAST, value) if system == 'Linux' and ret: raise InputOutputError() self._updating = False @@ -272,7 +273,7 @@ class Camera(object): ctl.set_val(self._line(value, 0, self._max_saturation, ctl.min, ctl.max)) else: value = int(value) / self._max_saturation - ret = self._capture.set(cv2.cv.CV_CAP_PROP_SATURATION, value) + ret = self._capture.set(cv2.CAP_PROP_SATURATION, value) if system == 'Linux' and ret: raise InputOutputError() self._updating = False @@ -291,10 +292,10 @@ class Camera(object): ctl.set_val(value) elif system == 'Windows': value = int(round(-math.log(value) / math.log(2))) - self._capture.set(cv2.cv.CV_CAP_PROP_EXPOSURE, value) + self._capture.set(cv2.CAP_PROP_EXPOSURE, value) else: value = int(value) / self._max_exposure - ret = self._capture.set(cv2.cv.CV_CAP_PROP_EXPOSURE, value) + ret = self._capture.set(cv2.CAP_PROP_EXPOSURE, value) if system == 'Linux' and ret: raise InputOutputError() self._updating = False @@ -313,7 +314,7 @@ class Camera(object): if self._frame_rate != value: self._frame_rate = value self._updating = True - self._capture.set(cv2.cv.CV_CAP_PROP_FPS, value) + self._capture.set(cv2.CAP_PROP_FPS, value) self._updating = False def set_resolution(self, width, height): @@ -326,14 +327,14 @@ class Camera(object): self._updating = False def _set_width(self, value): - self._capture.set(cv2.cv.CV_CAP_PROP_FRAME_WIDTH, value) + self._capture.set(cv2.CAP_PROP_FRAME_WIDTH, value) def _set_height(self, value): - self._capture.set(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT, value) + self._capture.set(cv2.CAP_PROP_FRAME_HEIGHT, value) def _update_resolution(self): - self._width = int(self._capture.get(cv2.cv.CV_CAP_PROP_FRAME_WIDTH)) - self._height = int(self._capture.get(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT)) + self._width = int(self._capture.get(cv2.CAP_PROP_FRAME_WIDTH)) + self._height = int(self._capture.get(cv2.CAP_PROP_FRAME_HEIGHT)) def get_brightness(self): if self._is_connected: @@ -341,7 +342,7 @@ class Camera(object): ctl = self.controls['UVCC_REQ_BRIGHTNESS_ABS'] value = ctl.get_val() else: - value = self._capture.get(cv2.cv.CV_CAP_PROP_BRIGHTNESS) + value = self._capture.get(cv2.CAP_PROP_BRIGHTNESS) value *= self._max_brightness return value @@ -352,10 +353,10 @@ class Camera(object): value = ctl.get_val() value /= self._rel_exposure elif system == 'Windows': - value = self._capture.get(cv2.cv.CV_CAP_PROP_EXPOSURE) + value = self._capture.get(cv2.CAP_PROP_EXPOSURE) value = 2 ** -value else: - value = self._capture.get(cv2.cv.CV_CAP_PROP_EXPOSURE) + value = self._capture.get(cv2.CAP_PROP_EXPOSURE) value *= self._max_exposure return value -- 2.35.1