Processingでビデオキャプチャを手軽に切り替えられるライブラリ「CaptureSelector」を作りました
先日シリアルポート設定ダイアログを表示できるライブラリを作りましたが、それのビデオキャプチャ版を作りました。下図のような設定ダイアログが表示されて、キャプチャデバイス、サイズ、FPSを自由に切り替えることができます。
ダウンロード
こちらのページに置いてます: BACKYARD - 工学ナビ
使い方
ダウンロードしたファイルを解凍すると、sampleというフォルダ中に「CaptureSelector.pde」というファイルが入っています。このPDEファイルがライブラリ本体で、これを自分のスケッチに追加して使用します。
CaptureSelectorではドロップダウンリストの表示にControlP5ライブラリを使っています。ProcessingにControlP5がインストールされていない場合は、ProcessingのSketchメニューから「Import Library...」→「Add Library...」とたどり、表示されたリストの中からControlP5を選択してインストールしてください。
以下にサンプルコードを示します。起動するとカメラ画像を表示するウィンドウとキャプチャの設定ダイアログが表示されます。設定を変更するとただちに反映され、入力画像のサイズに応じてウィンドウのサイズを自動変更します。
CaptureSelector selector; // キャプチャセレクタ Capture prev_cap; // 前回使用していたキャプチャ void setup() { size(400, 300); selector = new CaptureSelector(this); selector.show(); } void draw() { // 設定ダイアログから選択されているキャプチャを取得する Capture cap = selector.getCapture(); if ( cap==null || !cap.available() ) return; // キャプチャがnullもしくは画像が準備できていない状態なら抜ける // 前回と違うキャプチャが選ばれていたらウィンドウのサイズを変更する if ( cap != prev_cap ) { Insets insets = frame.getInsets(); cap.read(); size(cap.width, cap.height); frame.setSize( cap.width + insets.left + insets.right, cap.height + insets.top + insets.bottom ); } // キャプチャした画像を表示する background(0); cap.read(); image(cap, 0, 0); // キャプチャの情報を保持 prev_cap = cap; } // マウスクリックしたら設定ダイアログを表示 void mousePressed() { selector.show(); }
書き方について説明します。まずCaptureSelector型の変数を宣言し、setup()のなかでnewします。newするときの引数はthis(PAppletのインスタンス)です。キャプチャ設定ダイアログを表示するにはshow()を使います。show()はいつでも使えて、ダイアログを閉じた後もshow()によって繰り返し表示できます。選択されているキャプチャを取得するにはgetCapturel()を使います。なお、キャプチャの開始処理は選択時にCaptureSelectorの中で行われます。