Processing 3のOpenCVライブラリとUSB接続Webカメラでリアルタイムのモーショントラッキング(動体検知・動体追跡)をしてみるページ。
以前、後述のVideoライブラリのみによる動体検知を試してみましたが、今回は、そのOpenCVライブラリ版。
ちなみに以前、Linux界隈で有名らしき動体検知ソフトウェアmotionを使ってみたこともあります。
尚、このページのくくりとしては、ArduinoとProcessingの連携についてなのですが、Arduino側については、とりあえず、さておくものとします。
今回、さておいてしまったArduinoの回路はなく、Processing 3をインストールしたPCとPC内臓カメラか、USB外付けWebカメラがあればよいでしょう。
Processing IDEの[スケッチ] => [ライブラリをインポート...] => [ライブラリを追加...]メニューを選択、[Libraries]タブから[OpenCV for Processing]を選び、[Install]します。
LinuxなどUNIXライクなOSに限ってのことのようですが、相変わらず、Processing 3標準Videoライブラリがエラーとなり正常に機能しないため、代わりに有志の方のテスト版Videoライブラリを使わせて頂いた。
予め保存してある動画ファイルを使って動体検知を行なうOpenCVライブラリのサンプルスケッチBackgroundSubtractionをベースにCaptureと前回Processing Webカメラ/モーショントラッキングデモのソースを見比べながら、手探りでやってみた結果、こうなりました。
今回は、動体にボールペン(白いボディに黒いグリップ)のペン先(冒頭写真中央)を使ってみました。
ちなみに当初、opencv = new OpenCV(this, video);とすべきところをopencv = new OpenCV(this, 720, 480);としたら、こんなことに...。
具体的には、動きを止めれば、物体形状の検知枠?は消えるし、追跡・追尾もできている一方、冒頭画像のように、なぜか、動体を検知した際、左右に振っているわけでもないのに物体を型どった検知枠が左右に複数、残像のように横いっぱいに表示されてしまったという...。
こんなことになるのは...for文のContourのところかな?と思いつつ、追加でProcessing/OpenCVサンプルスケッチFindContoursと見比べてみて気づいた...。
尚、スケッチから起動後、画面上に何も表示されず、カメラの認識、電源が入るまで若干時間がかかり、その後、ようやく映像が表示されるのは、多少の差こそあれ、これまでのスケッチでも同様。