■
せっかく,新しいiMacにはカメラ(iSight)がついているので,
ビデオキャプチャをしてみた.
import processing.video.*; Capture myCapture; void setup() { //ウィンドウのサイズを指定 size(320, 240); //Captureするサイズをしてい. myCapture = new Capture(this, width, height, 30); } void captureEvent(Capture myCapture) { //キャプチャーを読み込む myCapture.read(); } void draw() { //キャプチャした情報を表示する image(myCapture, 0, 0); }
これで,取り敢えずキャプチャには成功
で,ピクセルにアクセスするためにはどうするかと言うと.
import processing.video.*; Capture cam; void setup() { size(320, 240); cam = new Capture(this, widht, height); } void draw() { //合計画素数を計算しておく. int sum_pixels = width * height; if (cam.available() == true) { cam.read(); //キャプチャーした画像をpixelにロードする. cam.loadPixels(); for(int i=0;i < sum_pixels;i++){ color currColor = cam.pixels[i]; //シフトビットを使って,red()やblue()よりも高速に処理している int currR = (currColor >> 16) & 0xFF; int currG = (currColor >> 8) & 0xFF; int currB = currColor & 0xFF; //***もちろんこれでも良いよ*****// //float currR = red(currColor); //float currB = blue(currColor); //float currG = green(currColor); //画素値の平均を取って.... int ave = int((currR + currG + currB) / 3); //それをピクセルに直して.... cam.pixels[i] = color(ave,ave,ave) ; } //描画すれば... image(cam, 0, 0); } }
濃淡画像の出来上がり〜