diff --git a/openflexure_microscope/camera/mock.py b/openflexure_microscope/camera/mock.py index 04d40529..4f614b1a 100644 --- a/openflexure_microscope/camera/mock.py +++ b/openflexure_microscope/camera/mock.py @@ -16,7 +16,7 @@ import logging # Type hinting from typing import Tuple -from openflexure_microscope.camera.base import BaseCamera +from openflexure_microscope.camera.base import BaseCamera, CaptureObject """ @@ -189,14 +189,19 @@ class MockStreamer(BaseCamera): bayer (bool): Store raw bayer data in capture """ + if isinstance(output, CaptureObject): + target = output.file + else: + target = target + with self.lock: - if isinstance(output, str): - output = open(output, "wb") + if isinstance(target, str): + target = open(target, "wb") - output.write(self.stream.getvalue()) + target.write(self.stream.getvalue()) - if isinstance(output, str): - output.close() + if isinstance(target, str): + target.close() # HANDLE STREAM FRAMES diff --git a/openflexure_microscope/camera/pi.py b/openflexure_microscope/camera/pi.py index be2a78ac..5cafb045 100644 --- a/openflexure_microscope/camera/pi.py +++ b/openflexure_microscope/camera/pi.py @@ -548,6 +548,11 @@ class PiCameraStreamer(BaseCamera): output_object (str/BytesIO): Target object. """ + if isinstance(output, CaptureObject): + target = output.file + else: + target = target + with self.lock: logging.info("Capturing to {}".format(output)) @@ -556,7 +561,7 @@ class PiCameraStreamer(BaseCamera): self.stop_stream_recording() self.camera.capture( - output, + target, format=fmt, quality=100, resize=resize, @@ -568,7 +573,7 @@ class PiCameraStreamer(BaseCamera): if not use_video_port: self.start_stream_recording() - return output + return target def yuv( self, use_video_port: bool = True, resize: Tuple[int, int] = None