前後のフレームの差から動体検出をするプログラムを勉強しています。
参考URL
OpenCVを利用して動画(カメラ)から動体検知をする方法について
Python
1#avgにデータが入っていない場合はgrayのデータフレームをコピーする 2if avg is None: 3 avg = gray.copy().astype("float") 4 continue 5#現在のフレームと移動平均との間の差を計算する 6cv2.accumulateWeighted(gray, avg, 0.5) 7frameDelta = cv2.absdiff(gray, cv2.convertScaleAbs(avg)) 8#二値化する 9thresh = cv2.threshold(frameDelta, 3, 255, cv2.THRESH_BINARY)[1]
この手法を割と多くのWebサイトで紹介されているのを見かけますが
現在のフレームと移動平均との間の差を計算する
cv2.accumulateWeighted(gray, avg, 0.5)
この部分について公式のTipsを見たりしたのですが
意味を理解しかねております。
今までよくわかっていないまま
前後のフレームを比較して差が生じたところを
3つ目の引数のパラメータを操作しながら顕著化するものとばかり
思っていたのですが、そうではないのでしょうか。
また、以下の文以降、avg = gray.copy().astype("float")はどこにも記述されていないのですが
ずっと一番最初に取得したavgを比較対象にしているということでしょうか。
Python
1#avgにデータが入っていない場合はgrayのデータフレームをコピーする 2if avg is None: 3 avg = gray.copy().astype("float") 4 continue
無知で申し訳ありませんが
どなたかもう少しかみ砕いてご教授お願いできませんでしょうか。
なお、こちらのURLで紹介されている方法は毎フレームごとに比較をしているのは
コードを見て理解できました。
OpenCVで動体検知をトライ(フレーム間差分法)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。