Webcamの映像を取得する
demo
スケッチブックをカメラに映してみました。
・参考
http://openframeworks.cc/documentation/video/ofVideoGrabber.html
code
一部のコードを抜粋して、掲載します。
class testApp : public ofBaseApp{ public: void setup(); void update(); void draw(); void windowResized(int w, int h); ofVideoGrabber my_grabber; };
Webcamの映像を取得するクラスofVideoGrabberが用意されているので、インスタンスを生成します。
//-------------------------------------------------------------- void testApp::setup(){ //背景色 ofBackground(0, 0, 0); //フレームレート ofSetFrameRate(30); ofSetWindowTitle("video test"); my_grabber.initGrabber(ofGetWidth(), ofGetHeight()); my_grabber.setDeviceID(1); } //-------------------------------------------------------------- void testApp::update(){ my_grabber.update(); } //-------------------------------------------------------------- void testApp::draw(){ my_grabber.draw(0, 0); }
initGrabberにサイズを指定します。drawで左上隅の位置を決めています。updateで繰り返し取得するビデオの画像を更新しています。
リサイズできない
void testApp::windowResized(int w, int h){ my_grabber.width = ofGetWidth(); my_grabber.height = ofGetHeight(); }
素直に横と縦をウィンドウサイズにしてみましたが、うまくいきませんでした。width,heightの値はちゃんと変わっているのですが、それがビデオのサイズにはなっていないようです。
void testApp::windowResized(int w, int h){ my_grabber.width = w; my_grabber.height = h; }
同じですが、これでも変化なしでした。
void testApp::windowResized(int w, int h){ my_grabber.close(); my_grabber.initGrabber(ofGetWidth(), ofGetHeight()); my_grabber.setDeviceID(1); }
一回ビデオを閉じて再設定してみました。
[ofQTKitGrabber:error] Selected video device ID (1) out of range (1).
[warning] call setDeviceID before grabber is started!
こんなエラーが出ました。setDeviceIDはすでにスタートしてるということでしょうか。これを2に変えても無理でした。
わからないので諦めました。