気の向くままに辿るIT/ICT
webzoit.netウェブサイトホームページ
IoT・電子工作

ProcessingとWebカメラで動体検知・追跡デモ

ウェブ造ホーム前へ次へ
サイト内検索
カスタム検索
Arduinoって?

ProcessingとWebカメラで動体検知・追跡デモ

ProcessingとWebカメラで動体検知・追跡デモ

Processingでモーショントラッキング
2018/03/28

 Processingでモーショントラッキング(動体検知・動体追跡)のデモンストレーション。

 今回は、Processing Webカメラ/モーショントラッキングのスケッチを試させて頂いた。

 ただし、現行のProcessing 3に対し、スケッチで使用しているCapture::Settings()メソッドは、Processing 1.0/1.1あたりのもので今となっては、使われていない模様、ということで他含め、一部、修正させて頂いた。

 また、自身が使わせて頂いているLinux(Debian 9/Stretch)においてProcessing 3標準Videoライブラリがエラーとなり正常に機能せず、代わりに有志の方のテスト版Videoライブラリを使わせて頂くことでLinux+Processing 3でWebカメラの利用や動画再生ができるようになった経緯がある。

 ちなみにLinux界隈には、動体検知ソフトウェアパッケージとして、その名もmotionがあり、以前、USB Webカメラの検証時に使わせて頂いたことがある。

 尚、このページのくくりとしては、ArduinoとProcessingの連携についてなのだが、Arduino側については、とりあえず、さておくものとする。

 今回、さておいてしまったArduinoの回路はなく、Processing 3をインストールしたPCとPC内臓カメラか、USB外付けWebカメラがあればよい。

...
 
/*
int w=320;
int h=240;
*/
int w=640;
int h=480;
 
...
 
void setup(){
// size(w, h);
 size(640, 480);
 
...
 
void keyPressed(){
 if(key=='c'){
//  video.settings();//カメラセッティング
  String[] cams = Capture.list();
  printArray(cams);
  /* カメラのキャプチャー */
  video = new Capture(this, cams[0]);
  video.start();
   if (video.available())
   {
      video.read();
   }
   /* 画像を表示 */
   set(0, 0, video);
 }
 if(key==CODED){
  if(keyCode==LEFT){
    tolerance-=1;//許容値を-1する
  }
  if(keyCode==RIGHT){
    tolerance+=1;//許容値を+1する
  }
 }
}

 スケッチについては、修正した部分のみ記載するものとし、あとはリンク先を参照。

 まず、Processing 3では、size()の引数は、変数ではなく、固定値にしないとエラーになるので固定値とし、デフォルトのサイズでは小さかったためサイズ変更。

 ただ、変数を許容する部分では、そのまま、[w]、[h]を使った。

 あとは、void keyPressed(){}内の[video.settings()]部分をProcessing 3で機能するように書き換えた。

 と言っても、とりあえず、サンプルスケッチなどから切り貼りしただけで、もっとスマートな書き方があるのかもしれないが、機能したので良しとする。

 内蔵カメラやUSBカメラなどWebカメラが複数ある場合には、printArray(Capture.list())でProcessing IDEの情報ウィンドウに列挙されるので所望のカメラの要素もわかる。

 ちなみに[LEFT]/[RIGHT]は、マウスの左クリック、右クリックなんだろうが、[CODED]ってなんだろう...。