triggered_mode.py
# この作品はMITライセンスの下で提供されています。
# Copyright (c) 2013-2023 OpenMV LLC. 全著作権所有。
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# グローバルシャッタートリガーモードの例
#
# この例では、グローバルシャッターカメラをトリガーモードに設定する方法を示します。トリガーモードでは
# snapshot()がカメラ画素の積分開始タイミングを正確に制御するため、
# 外部の動きに合わせて撮影を同期させることができます。カメラは全画素を同時に取り込むため
# (ローリングシャッターカメラではなくグローバルシャッターカメラであるため)、画像内の動きは
# 積分時間分のみ写り込み、画像の行数を掛けた積分時間分は写り込みません。
# さらに、トリガーモードではカメラが露光完了後まで行の読み出しを行わないため、
# センサーノイズが低減され、より高品質な画像が得られます。
#
# ただし、フレームが連続的に生成されなくなり、また読み出し前に積分の完了を
# 待つ必要があるため、最大フレームレートは2~3分の1に低下します
# (フレームの読み出しについて)。
import csi
import time
csi0 = csi.CSI()
csi0.reset() # センサーをリセットして初期化します。
csi0.pixformat(csi.GRAYSCALE) # ピクセルフォーマットをGRAYSCALEに設定します
csi0.framesize(csi.VGA) # フレームサイズをVGA(640x480)に設定します
csi0.snapshot(time=2000) # 設定が反映されるまで待ちます。
clock = time.clock() # FPSを計測するためのclockオブジェクトを作成します。
csi0.ioctl(csi.IOCTL_SET_TRIGGERED_MODE, True)
while True:
clock.tick() # FPSクロックを更新します。
img = csi0.snapshot() # 画像を撮影して返します。
print(clock.fps()) # 注意: OpenMV CamはIDEに接続されている間、
# 速度が約半分になります。切断すればFPSは向上します。