"""
capture
Picamera2 を使用してカメラ画像を取得するモジュール
"""
import numpy as np
from picamera2 import Picamera2
from common import config
class CameraCapture:
"""Picamera2 でフレームを取得するクラス"""
def __init__(self) -> None:
self._camera: Picamera2 | None = None
def start(self) -> None:
"""カメラを初期化して撮影を開始する"""
self._camera = Picamera2()
camera_config = self._camera.create_preview_configuration(
main={
"size": (config.FRAME_WIDTH, config.FRAME_HEIGHT),
"format": "BGR888",
},
)
self._camera.configure(camera_config)
self._camera.start()
def capture(self) -> np.ndarray:
"""1フレームを取得する
Returns:
BGR 形式の画像(NumPy 配列)
"""
return self._camera.capture_array()
def stop(self) -> None:
"""カメラを停止する"""
if self._camera is not None:
self._camera.stop()
self._camera.close()
self._camera = None