第6回:Processing + Myron(JMyron)でリアルタイム映像処理

今日の授業は、processingでリアルタイムにビデオ映像をキャプチャーして、その情報を解析する方法を実験してきます。

今回は、オープンソースで開発が進められているビデオ解析のためのライブラリ群である、Myron(http://webcamxtra.sourceforge.net/)を利用します。

Myron(JMyron)とは

JMironサンプル(1):ビデオ映像のキャプチャー

実行結果(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に分解

実行結果(2)
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):画像の輪郭を抽出

実行結果(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):ビデオ映像をピクセレート

実行結果(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):変化した部分だけを、表示する

実行結果(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

Comments

コメントはありません

Add Comment

このアイテムは閉鎖されました。このアイテムへのコメントの追加、投票はできません。

トップページに戻る