未分類OpenCVで動体検知カウンターTiBra2019年7月11日プログラミングComments前回7年ぶりに再トライしているPICですが、なかなか進みません。したいことの情報に行き着かない。感じで案の定、頓挫中なのですが、高機能プランターを作りたいっと言った友人はビールを作りたいと言い始めました。http://brewojisan.com/その際、発酵させる過程で炭酸ガスが出るのですが、発酵状態の把握の目安として、ガス発生の推移を計測したいと言いました。具体的には、下の動画のように、水封管がガスでコポコポする頻度を測りたいとのこと。久々のOpenCVで挑戦だ!スマホ手持ちで撮影してるので、まずは手ブレを補正しました。固定カメラで撮ってればしなくていいんだけど。ソースおよび参考サイトhttp://code.tiblab.net/python/opencv/movie_stabilization一発でいい感じにできて、ちょっとした感動を覚えました。OpenCV、やはり良いライブラリだ・・・。次に本題、動体検知をしてみました。ソースおよび参考サイトhttp://code.tiblab.net/python/opencv/detect_motionこちらも一発OK。この段階で水封部をクリッピングして(実際には最初にクリッピング)、白色の面積比(ピクセル比)をグラフ化するとこんな感じ。カウントできそうですね。ノイズ処理を加えます。先ほどの動体検知結果の細かなノイズを除去するためにメディアンフィルタをかけるとこんな感じになりました。いい感じにノイズが消えています。このままでも良さそうですが、最新5データの平均(移動平均)を取ってみます。ピーク値が少し減りますが、さらに細かいブレが平坦化されます。これに閾値(今回は0.3)を設け、2値化します。カウントは閾値未満から閾値を超えた際にするようにしました。ちなみに移動平均をする前に0.3で、閾値分けしてみると、最初の山で細かいブレにより微妙に0.3を前後してカウントがずれてしまいました。場合によっては、移動平均かけても、そうならないとも限らないので、前回カウントから一定の間隔が開かないと、カウントしない処理も加えました。これで、上記移動平均をかけてないグラフでもカウント数は3回となります。あとはカウントした際に時間をログしていけば、頻度の傾向がわかりますね。コメントをキャンセルメールアドレスが公開されることはありません。ブログ内容TibLab管理人TiBraのつぶやき程度の内容です。決まった趣旨はありません。興味を持ったこと・日常で行ったことを何でも書きます。共有価値がありそうな記事は昔からやっているTB-note(http://timiditybraver.blog71.fc2.com)に投稿します。