2014年12月26日

processingで複数のwebカメラを扱うコツ

processingで複数のwebカメラを扱うコツに関する備忘録。

参考サイトは、ここ。
http://salmon2073.net/?p=82
感謝。
(あれれ?リンク切れ?)


まずはカメラの選定から。
カメラは何でもいいというわけではない。
かといってどれが使えるかは分からない。
繋いでは試す。
繋いでは試すの繰り返し。


まずは繋いでみて、下記コードを走らせる。

import processing.video.*;

Capture myCapture;

void setup() {
size(640, 480);
println(myCapture.list());
}

void draw() {

}


するとカメラの内部情報として、
name=が取得できる。
もしvirtualなんとかというnameがでてきてもそれは偽物。
もしnameがでてこなかったら使えない。
あるいはnameがフォント化けしていても使えない。
あと同じカメラは同じ名前になるので同時に使えない。

このように使える種類の違うカメラを二台用意する。

その二台のカメラをUSBに指すが、
二台をPCの違うUSBボードに指す(例えば、PCの前と後ろ)。
同じUSBボードは一応避ける(まあ、おまじないみたいなものです。必須ではないですの)。

で、下記コードを走らせる。

import processing.video.*;

Capture myCapture1;
Capture myCapture2;

void setup() {
size(640*2, 480);
myCapture1 = new Capture(this, 640, 480, "Logicool Webcam 500", 30);
myCapture2 = new Capture(this, 640, 480, "USB2.0 Camera", 30);

myCapture1.start();
myCapture2.start();
}

void draw() {
if (myCapture1.available() && myCapture2.available()) {
myCapture1.read();
myCapture2.read();
image(myCapture1, 0, 0);
image(myCapture2, 640, 0);
}
}


Logicool Webcam 500とUSB2.0 Cameraというのが今回のカメラの名前。名前のところを書き換えてね。

同じ趣旨のコードが上記サイトに掲載されているが、
一部コードミスがあるのでご注意です。
(あれれ?リンク切れ?)

これで二台の映像が走れば、わんわんっ!

お疲れ様でひた。

posted by ikaninja at 16:42| Comment(0) | processing