proce55ingで塊を検出する。
BlobDetectionを使うと簡単に塊を検出することができます。
これを利用すると例えばマルチタッチアプリケーションを作成するときに
指の検知に利用できます。(OpenTouchの中で利用している。)
まずは試しにサンプルの中にあるblobDetection>bd_webcamを利用して
検出したBlobごとに右端にBlobIDを表示するプログラム追加で書いてみました。
(追加した部分だけ記述)
PFont font; void setup() { セットアップ省略.. //フォント PFont font = loadFont("LucidaGrande-12.vlw"); textFont(font,12); } void drawBlobsAndEdges(boolean drawBlobs, boolean drawEdges) { 途中省略.. if (drawBlobs) { strokeWeight(1); stroke(255,0,0); rect( b.xMin*width,b.yMin*height, b.w*width,b.h*height ); debugBlobID(b,2);//ここに追加 } } //追加 void debugBlobID(Blob b,int type){ //色 fill(255,0,0); switch(type){ //左上 case 1: text(b.id,(int)(b.xMin*width),(int)(b.yMin*height)); break; //右上 case 2: text(b.id,(int)(b.xMin*width)+(b.w*width),(int)(b.yMin*height)); break; //右下 case 3: text(b.id,(int)(b.xMax*width),(int)(b.yMax*height)); break; //左下 case 4: text(b.id,(int)(b.xMin*width),(int)(b.yMin*height)+(b.h*height)); break; } }
検出されたBlobのX,Y,width,heightの範囲は0~1の範囲なので、
ウィンドウのサイズをかける必要があります。
注意:文字を使う場合にはあらかじめTools>Create Fontから任意のフォントを作成する必要があります。