sensor_manual_whitebal_control.py
# この作品はMITライセンスの下で提供されています。
# Copyright (c) 2013-2023 OpenMV LLC. 全著作権所有。
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# センサーの手動ホワイトバランス制御
#
# この例では、カメラセンサーの
# ホワイトバランスゲインを、AWB制御に任せる代わりに手動で制御する方法を示します。
# ホワイトバランスは、R/G/Bのゲイン値を調整することで実現されます。
# 画像の平均色がグレーになるようにします。
# 自動ホワイトバランス(AWB)アルゴリズムはこれを自動的に
# 行いますが、通常はカメラの電源を入れるたびに
# 結果が異なるため、
# カラートラッキングの設定を正しく行うのが難しくなります。手動でゲイン値を
# 記録しておき、それを強制的に適用することで
# 起動時にセンサーの色味を制御できます
# カメラが見る色を制御できます。
import csi
import time
csi0 = csi.CSI()
csi0.reset() # センサーをリセットして初期化します。
csi0.pixformat(csi.RGB565) # ピクセルフォーマットをRGB565(またはGRAYSCALE)に設定します
csi0.framesize(csi.QVGA) # フレームサイズをQVGA(320x240)に設定します
csi0.snapshot(time=2000) # 設定が反映されるまで待ちます。
clock = time.clock() # FPSを計測するためのclockオブジェクトを作成します。
# ここでホワイトバランスゲインを制御できます。最初の値が
# Rゲイン(dB)、次にGゲイン(dB)、続いてBゲイン(dB)です。
#
# 好みのゲイン値(プリント出力から取得)で以下の行のコメントを外してください。
#
# csi0.auto_whitebal(False, rgb_gain_db = (0.0, 0.0, 0.0))
# 注意: ゲインに(0.0, 0.0, 0.0)を指定すると、出力はほぼゼロに近い値になります。
# 入力した値と出力される値が完全に一致するとは限りません
# (出力される値について)。
while True:
clock.tick() # FPSクロックを更新します。
img = csi0.snapshot() # 画像を撮影して返します。
print(clock.fps(), csi0.rgb_gain_db()) # AWBの現在のRGBゲインを表示します。