#22 Fix rounding not happening

This commit is contained in:
James Hodgson
2022-10-07 17:24:29 +01:00
parent 264753259a
commit 1deabbb568
3 changed files with 8 additions and 12 deletions

View File

@@ -24,7 +24,7 @@ Specifies the camera type (`picam` interface implementation) to use.
### `capture_resolution`
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`

View File

@@ -1,3 +1,5 @@
from utils.utils import round_resolution
class PiCam:
def __init__(self, config: dict):
self.capture_resolution = config["capture_resolution"]
@@ -8,14 +10,16 @@ class PiCam:
: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:
"""Set resolution for camera preview (viewfinder)
: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:
"""Capture an image

View File

@@ -1,5 +1,4 @@
from picam.picam import PiCam
from utils.utils import round_resolution
from io import BytesIO
from picamera import PiCamera
@@ -23,17 +22,10 @@ class PiCam1(PiCam):
self.camera.resolution = resolution
def set_preview_resolution(self, resolution: "tuple[int, int]") -> None:
rounded_resolution = round_resolution(resolution, (32, 16))
super().set_preview_resolution(rounded_resolution)
super().set_preview_resolution(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"""
self.camera = PiCamera(resolution=self.preview_resolution)