せっかく,新しい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);
  }
} 


濃淡画像の出来上がり〜