on_disk_basic_frame_differencing.py
# この作品はMITライセンスの下で提供されています。
# Copyright (c) 2013-2023 OpenMV LLC. 全著作権所有。
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# 基本的なフレーム差分の例
#
# 注意: この例を実行するにはSDカードが必要です。
#
# この例は、OpenMV Cam でフレーム差分を使用する方法を示します。これは
# 背景画像の更新を行わないため、基本的なフレーム差分と呼ばれます。
# そのため、時間が経つにつれて背景画像が変化し、問題が生じる可能性があります。
import csi
import os
import time
TRIGGER_THRESHOLD = 5
csi0 = csi.CSI()
csi0.reset() # センサーをリセットして初期化します。
csi0.pixformat(csi.RGB565) # または csi.RGB565
csi0.framesize(csi.QVGA) # または csi.QQVGA (またはその他)
csi0.snapshot(time=2000) # 新しい設定を反映させます。
csi0.auto_whitebal(False) # ホワイトバランスをオフにします。
clock = time.clock() # FPSを計測します。
if "temp" not in os.listdir():
os.mkdir("temp") # 一時ディレクトリを作成します
print("About to save background image...")
csi0.snapshot(time=2000) # ユーザーが準備するための時間を与えます。
csi0.snapshot().save("temp/bg.bmp")
print("Saved background image - Now frame differencing!")
while True:
clock.tick() # snapshot()呼び出し間の経過ミリ秒を計測します。
img = csi0.snapshot() # 画像を撮影して返します。
# 画像を「abs(NEW-OLD)」のフレーム差分に置き換えます。
img.difference("temp/bg.bmp")
hist = img.get_histogram()
# 以下のコードは、99 パーセンタイル値 (例えば
# 外れ値を除いた最大値) を 90 パーセンタイル値 (例えば非最大の値) と比較することで動作します。
# 2 つの値の差は、差分
# 画像でより多くのピクセルが変化しているように見えるほど大きくなります。
diff = hist.get_percentile(0.99).l_value - hist.get_percentile(0.90).l_value
triggered = diff > TRIGGER_THRESHOLD
print(clock.fps(), triggered) # 注: OpenMV Camは接続時、速度が約半分になります
# コンピュータに接続されている間。切断するとFPSは向上します。