カメラからのキャプチャ映像を2色に変換するプログラムです。
/*
This program has been arranged by Yasushi Noguchi.
Original Code was created by Golan Levin.
*/
import processing.video.*;
Capture video;
void setup() {
size(640, 480);
//画面サイズのキャプチャ画像を生成。
//パソコンの性能によっては画面がコマ落ちするので、コマ落ちするようだったら、
//一番右のフレームレートを上げる。
video = new Capture(this, width, height, 60);
video.start(); //Processing ver.2.0以上はこのコードが必要
loadPixels(); //画面に画像のピクセルを展開
}
void draw() {
background(0);
if (video.available()) { //もしキャプチャができたら、
video.read(); //ビデオフレームの読み込み
video.loadPixels(); //ビデオのピクセルを操作できるようにする
//1ピクセルごとに色を調べる。
for (int y = 0; y < video.height; y ++) {
for (int x = 0; x < video.width; x ++) {
//ビデオのピクセルを抜き出す
int pixelColor = video.pixels[y*video.width + x];
//赤、緑、青をそれぞれ抽出する。以下の3行はビットシフトといって、
//理解するのが結構大変なので、ここでは詳細は説明しない。
int r = (pixelColor >> 16) & 0xff;
int g = (pixelColor >> 8 ) & 0xff;
int b = pixelColor & 0xff;
int gray = (r + g + b)/3; //明暗を計算
//もし、ピクセルの明るさか127以上だったら、白にする。
if(gray >= 127) pixels[y*video.width + x] = color(255, 255, 255);
//それ以外は、赤
else pixels[y*video.width + x] = color(255, 0, 0);
}
}
updatePixels(); //画像を更新
}
}

