#22 Fix distortion bug

This commit is contained in:
James Hodgson
2022-10-07 17:18:53 +01:00
parent bdb5c39d0c
commit 264753259a
4 changed files with 34 additions and 4 deletions

View File

@@ -1,4 +1,5 @@
from picam.picam import PiCam
from utils.utils import round_resolution
from io import BytesIO
from picamera import PiCamera
@@ -22,8 +23,16 @@ class PiCam1(PiCam):
self.camera.resolution = resolution
def set_preview_resolution(self, resolution: "tuple[int, int]") -> None:
self.set_camera_resolution(resolution)
return super().set_preview_resolution(resolution)
rounded_resolution = round_resolution(resolution, (32, 16))
super().set_preview_resolution(rounded_resolution)
self.set_camera_resolution(self.preview_resolution)
def set_capture_resolution(self, resolution: "tuple[int, int]") -> None:
rounded_resolution = round_resolution(resolution, (32, 16))
return super().set_capture_resolution(rounded_resolution)
def init_camera(self) -> None:
"""Initialize picamera camera object"""

18
src/utils/utils.py Normal file
View File

@@ -0,0 +1,18 @@
def round_value_up(value: int, multiple: int) -> int:
"""Round value up to the nearest of the given multiple
:param value: Value to round
:param multiple: Multiple to round the value up to
:returns: Rounded value
"""
value_mod = value % multiple
return value + (multiple - value_mod)
def round_resolution(resolution: "tuple[int, int]", multiples: "tuple[int, int]") -> "tuple[int, int]":
"""Round resolution up to the nearest of the given multiples
:param resolution: Resolution to round
:param multiples: Multiples to round the resolution values to
:returns: Tuple containing rounded resolution
"""
return (round_value_up(resolution[0], multiples[0]), round_value_up(resolution[0], multiples[0]))