はじめに
以前、ラズパイを使って子供の寝相の監視をしたが、そのときにMicroSDの容量不足に悩まされた。
OpenCVで保存すれば容量は減らせるのだが、撮影間隔を守ることができなかったので、
実際にどれぐらい時間に対して不安定なのかを確認していた。
もったいないのでとりあえず公開しておく。
時間測定用コード
適当な時間待ってから写真を撮って保存するのにかかった時間を計測するプログラムを書いた。
これを起動して、一晩放置してみた。
from picamera import PiCamera
from picamera import array
from time import sleep
import datetime
import cv2
count = 0
with open("time.csv", "w") as w:
with PiCamera() as cam:
while count < 10000:
with array.PiRGBArray(cam) as stream:
start = datetime.datetime.now()
cam.capture(stream, 'rgb')
cv2.imwrite("test_bgr.jpg", stream.array)
end = datetime.datetime.now()
w.write(str((end - start).total_seconds()))
w.write("\n")
sleep(0.5)
count += 1
結果
1万回の撮影結果を時間ごとにまとめた結果が下記の表。
例えば、0.5~0.6秒かかったのは10000回中5750回となる。
もっとsleepの時間を短くしたら結果は変わるかもしれないが、
毎秒撮影するときに10000回中に数回は1秒以上の時間がかかるとなると、
1時間に一度、撮影に1秒以上かかるタイミングがあると考えて良さそうだ。
毎秒動作させることが必須な使い方には、ラズパイ+OpenCVは向かなさそうだということがこの実験からわかった。