Processing楽しい。
簡単な背景差分法で人影を作ってみた。
マウスクリックすると変数bgにwebcamの画像をコピーする。
あとはdraw()ループの中でbgとwebcamのピクセルを1つずつ比較して、しきい値以上の差があれば黒くする。
Built with Processingの168ページと186ページのあたりを見たらすぐ出来た。
Source Code (Processing 0124 Beta)
/***
CaptureandComparepixels
RGBを比較して影化
Compiler:Processing0124Beta
Date:2007/4/27
Author:ShoHashimoto
WebSite:http://shokai.org
***/importprocessing.video.*;
colorthreshold=color(5,5,5);//RGBでしきい値を指定
Capturecamera;
PImagebg;voidsetup(){
size(640,480);
camera=newCapture(this,width,height,12);
bg=newPImage(width,height);
}voiddraw(){
loadPixels();//pixelsに現在の表示を読み込み
for(inti=0;i
intc=camera.pixels[i];
intb=bg.pixels[i];
if(abs(red(c)-red(b))>red(threshold)&&
abs(green(c)-green(b))>green(threshold)&&
abs(blue(c)-blue(b))>blue(threshold)){//ピクセルに色の差がある時
pixels[i]=color(0,0,0);//黒
}
else{
pixels[i]=color(255,255,255);//白
}
}
updatePixels();//pixelsを表示に反映させる
}voidcaptureEvent(Capturecamera){
camera.read();
}voidmousePressed(){
println(“SaveBG”);
bg.copy(camera,0,0,width,height,0,0,width,height);//背景を保存
}