#22 Fix rounding not happening
This commit is contained in:
@@ -24,7 +24,7 @@ Specifies the camera type (`picam` interface implementation) to use.
|
|||||||
### `capture_resolution`
|
### `capture_resolution`
|
||||||
Specifies the resolution of the photos to take.
|
Specifies the resolution of the photos to take.
|
||||||
|
|
||||||
For picam1 implementation (and maybe more!), the X value will be rounded up to a multiple of 32, and the Y value to a multiple of 16, otherwise we'll get bugs due to the behaviour described in the [docs](https://picamera.readthedocs.io/en/release-1.13/recipes2.html#unencoded-image-capture-yuv-format)
|
The X value will be rounded up to a multiple of 32, and the Y value to a multiple of 16, otherwise we'll get bugs due to the behaviour described in the [docs](https://picamera.readthedocs.io/en/release-1.13/recipes2.html#unencoded-image-capture-yuv-format)
|
||||||
|
|
||||||
|
|
||||||
### `preview_resolution`
|
### `preview_resolution`
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
from utils.utils import round_resolution
|
||||||
|
|
||||||
class PiCam:
|
class PiCam:
|
||||||
def __init__(self, config: dict):
|
def __init__(self, config: dict):
|
||||||
self.capture_resolution = config["capture_resolution"]
|
self.capture_resolution = config["capture_resolution"]
|
||||||
@@ -8,14 +10,16 @@ class PiCam:
|
|||||||
|
|
||||||
:param resolution: New resolution for camera captures
|
:param resolution: New resolution for camera captures
|
||||||
"""
|
"""
|
||||||
self.capture_resolution = resolution
|
rounded_resolution = round_resolution(resolution, (32, 16))
|
||||||
|
self.capture_resolution = rounded_resolution
|
||||||
|
|
||||||
def set_preview_resolution(self, resolution: "tuple[int, int]") -> None:
|
def set_preview_resolution(self, resolution: "tuple[int, int]") -> None:
|
||||||
"""Set resolution for camera preview (viewfinder)
|
"""Set resolution for camera preview (viewfinder)
|
||||||
|
|
||||||
:param resolution: New resolution for camera preview
|
:param resolution: New resolution for camera preview
|
||||||
"""
|
"""
|
||||||
self.preview_resolution = resolution
|
rounded_resolution = round_resolution(resolution, (32, 16))
|
||||||
|
self.preview_resolution = rounded_resolution
|
||||||
|
|
||||||
def capture(self) -> bytearray:
|
def capture(self) -> bytearray:
|
||||||
"""Capture an image
|
"""Capture an image
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
from picam.picam import PiCam
|
from picam.picam import PiCam
|
||||||
from utils.utils import round_resolution
|
|
||||||
|
|
||||||
from io import BytesIO
|
from io import BytesIO
|
||||||
from picamera import PiCamera
|
from picamera import PiCamera
|
||||||
@@ -23,17 +22,10 @@ class PiCam1(PiCam):
|
|||||||
self.camera.resolution = resolution
|
self.camera.resolution = resolution
|
||||||
|
|
||||||
def set_preview_resolution(self, resolution: "tuple[int, int]") -> None:
|
def set_preview_resolution(self, resolution: "tuple[int, int]") -> None:
|
||||||
rounded_resolution = round_resolution(resolution, (32, 16))
|
super().set_preview_resolution(resolution)
|
||||||
|
|
||||||
super().set_preview_resolution(rounded_resolution)
|
|
||||||
|
|
||||||
self.set_camera_resolution(self.preview_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:
|
def init_camera(self) -> None:
|
||||||
"""Initialize picamera camera object"""
|
"""Initialize picamera camera object"""
|
||||||
self.camera = PiCamera(resolution=self.preview_resolution)
|
self.camera = PiCamera(resolution=self.preview_resolution)
|
||||||
|
|||||||
Reference in New Issue
Block a user