<< 第5回:pushMatrix()とpopMatrix()、3Dのアニメーション | top | 第7回:オブジェクト指向プログラミング入門 >>
第6回:Processing + Myron(JMyron)でリアルタイム映像処理
今日の授業は、processingでリアルタイムにビデオ映像をキャプチャーして、その情報を解析する方法を実験してきます。
今回は、オープンソースで開発が進められているビデオ解析のためのライブラリ群である、Myron(http://webcamxtra.sourceforge.net/)を利用します。
Myron(JMyron)とは
- http://webcamxtra.sourceforge.net/
- C++のコアライブラリーと、様々な言語で利用するためのラッパーから成る
- Java、Processing、Macromedia Directorから利用が可能
- オープンソースで開発が行われている、ビデオキャプチャーやコンピュータビジョン関するプラグイン
JMironサンプル(1):ビデオ映像のキャプチャー
import JMyron.*;
JMyron m; //カメラのオブジェクト
void setup(){
size(320,240);
//カメラのオブジェクトの
//新しいインスタンスを作成
m = new JMyron();
//キャプチャ開始
m.start(width,height);
m.findGlobs(1);
}
void draw(){
//カメラ映像のアップデート
m.update();
//カメラの画像をピクセルで取得
int[] img = m.image();
//表示画面のピクセル配列をロード
loadPixels();
for(int i=0;i<width*height;i++){
//表示画面の各ピクセル配列に、
//ビデオ画像のピクセルの配列を読み込み
pixels[i] = img[i];
}
//表示画面のピクセル配列を更新
updatePixels();
}
public void stop(){
m.stop();
super.stop();
}
JMyronサンプル(2):取り込んだ映像をRGBに分解
import JMyron.*;
JMyron m;
void setup(){
size(320*3,240);
m = new JMyron();
m.start(width,height);
m.findGlobs(0);
println("Myron " + m.version());
}
void draw(){
background(0);
m.update();
int[] img = m.image();
float[] r = new float[width*height];
float[] g = new float[width*height];
float[] b = new float[width*height];
loadPixels();
for(int i=0;i
JMyronサンプル(3):画像の輪郭を抽出
import JMyron.*;
JMyron m;
void setup(){
size(320,240);
m = new JMyron();
m.start(width,height);
m.minDensity(100);
m.trackColor(0,0,0,150);
println("Myron " + m.version());
stroke(128,128,255);
fill(128,128,255,128);
}
void draw(){
background(255);
m.update();
int[][][] list = m.globEdgePoints(10);
for(int i=0;i
JMyronサンプル(4):ビデオ映像をピクセレート
import JMyron.*;
JMyron m;
void setup(){
size(640,480);
m = new JMyron();
m.start(width,height);
m.findGlobs(0);
println("Myron " + m.version());
rectMode(CENTER);
noStroke();
smooth();
}
void draw(){
background(0);
m.update();
int[] img = m.image();
float r,g,b;
for(int y=0;y
JMyronサンプル(5):変化した部分だけを、表示する
import JMyron.*;
JMyron m;
void setup(){
size(640,480);
m = new JMyron();
m.start(width,height);
m.trackColor(255,255,255,256*3-100);
m.update();
m.adaptivity(10);
m.adapt();
println("Myron " + m.version());
rectMode(CENTER);
noStroke();
}
void draw(){
m.update();
int[] img = m.differenceImage();
loadPixels();
for(int i=0;i
<< 第5回:pushMatrix()とpopMatrix()、3Dのアニメーション | top | 第7回:オブジェクト指向プログラミング入門 >>

Comments
コメントはありません
Add Comment
トップページに戻る