2013年02月

四谷アート・ステュディウム2008年度「建築発明工作ゼミ」(講師=福井裕司)授業サブノートの一部です。「建築発明工作ゼミ2008」ブログより転載。

授業サブノートを抜粋して、2013年度「電子工作ゼミ」で教材として使用する、“Arduino”と“Processing”を用いた実践演習の内容を2回にわたってそれぞれ紹介します。第2回は“Processing”です。ゼミの資料としてご参照ください。


>> 電子工作ゼミの講座案内はこちらです


Processing Webカメラを光センサとして使う

今回は、パソコンに接続したWebカメラを光センサとして使う応用実験を行います。点光源(LEDなど)を空間内で動かし、その軌跡をProcessingの画面上に描画してみたいと思います(身体にLEDなどの点光源をつけて、腕を動かしたり歩いたりすれば、身体の動きを連続的に描画/記録することができます)。
Processingでは、videoライブラリを用いてWebカメラを通してキャプチャし、キャプチャした画面のピクセルをひとつずつ読み込んで、設定した明るさ以上のピクセルを選択します。選択したピクセルのみを別の色で表示するプログラムになります。
以下のプログラムでは、カメラからキャプチャした画像の各ピクセルの明るさ(0~255)を調べ、そのピクセルの明るさが254以上であれば、画面上に赤で表示する内容になります。クリックすれば、黒で塗りつぶして画面をリセットすることにします。
videoライブラリの基本的な使い方は「Processing Video(Webカメラ)」を参照して下さい。

*Windowsの場合、そのままの設定ではこのVideoライブラリを使用することができません。WinVDIG 1.0.1をインストールする必要があります。

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
//ライブラリを取り込む
import processing.video.*;

//オブジェクトの用意
Capture video;

//画面サイズの変数と値
int w=320;
int h=240;

void setup() {
size(w, h);
video = new Capture(this, w, h, 30);
//背景を黒にしておく
background(0);
}

void draw() {
//画面のピクセルをロードしておく
loadPixels();

//カメラ画像のピクセルをひとつずつ調べる
for(int i=0;i //ピクセルが254以上の明るさの場合
if(brightness(video.pixels[i])>=254){
//選択されたピクセルを赤にする
pixels[i]=color(255,0,0);
}
}

//ピクセル表示更新
updatePixels();
}

//キャプチャ画面の読み込み
void captureEvent(Capture video) {
video.read();
}

//マウスボタンを押したら
void mousePressed(){
//背景を黒にする
background(0);
}

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

続きを読む