« ロボット・アスリートCUP2014 in はまぎんこども宇宙科学館 | トップページ | 【Processing】色識別 »

2014/01/28

【Processing】 GSVideoでWebカメラを使う

 今日は体調不良。少し疲れがたまっているのかもしれない。

 さて、昨年の記事でProcessingでwebカメラを使う方法を書きました。
 Processingのバージョンの違いによってプログラムの書き方が少し変わったと書いたのですが、実はもう一つ違いがあって解決策を探さねばと思っておりました。

 実際試した方は感じたと思うのですが、バージョン2.xの方は遅延がかなり目立ちます。
 リアルタイムの処理をしようと思うのをためらうレベル。

 ということで、今回はGSVdeoを使ってWebカメラを表示してみます。
 実行環境はProcessing 2.1.1です。

 GSVideoはここからダウンロードし、processingのプログラム配下にあるmodes\java\librariesにコピーしておきます。
 これでprocessingを起動すると[Sketch] -[Import library]から選択できるようになります。

 以下はソースコード

◇test033

//test033
import codeanticode.gsvideo.*;

int w_img = 640;       
int h_img = 480;           
int p_text_size = 30;      
int fps = 24;

GSCapture cam;

void setup() {
  size(w_img, h_img);  // 画面サイズの設定
  String[] cameras = GSCapture.list();
  if (cameras.length == 0){
    println("There are no cameras available for capture.");
    exit();
  } else {
    println("Available cameras:");
    for (int i = 0; i < cameras.length; i++) {
      println(cameras[i]);      // カメラの名
    }

    cam = new GSCapture(this, w_img, h_img, cameras[0]);
    cam.start();
  }
}

void draw() {
  frameRate(fps);      // フレームレートの設定

  if (cam.available()) {
    cam.read();       // カメラ画像を読み込んで
    image(cam, 0, 0); // 画面に表示
  }
}

//スペースキーで終了
void keyPressed() {
  if(key == ' ') exit();
}

 遅延も気になるレベルではなく快適に動きます。

|

« ロボット・アスリートCUP2014 in はまぎんこども宇宙科学館 | トップページ | 【Processing】色識別 »

コメント

初めまして。

私の環境ですと、GSVideoを導入後、test033を実行しても、カメラ自体はオンに
なっているようですが(カメラのLED点灯)、カメラの画像が表示されず灰色画面に
なってしまいます。
しかもWindowを閉じると、テキストエリアにいかのようなエラーが発生します。
versionは2.2.1です。
どうしてでしょう・・・ぜひGSVideoが使いたいのですが・・・

(java.exe:14328): GStreamer-CRITICAL **:
Trying to dispose element rgb, but it is in PAUSED instead of the NULL state.
You need to explicitly set elements to the NULL state before
dropping the final reference, to allow them to clean up.
This problem may also be caused by a refcounting bug in the
application or some element.

(java.exe:14328): GStreamer-CRITICAL **:
Trying to dispose element GSCapture, but it is in PAUSED instead of the NULL state.
You need to explicitly set elements to the NULL state before
dropping the final reference, to allow them to clean up.
This problem may also be caused by a refcounting bug in the
application or some element.

投稿: | 2014/06/23 14:11

失礼しました、先程コメントした者です。

色々チェックしていたら、別のプログラムが対象のカメラを占有していたことが
判明しました。そっちを終了させたら問題なく動作!

しかし、実は1.5.1時代からGSVideoを使っているのですが、私の環境ですと
Export Applicationをすると、exeファイルは生成されるのですが、これを
起動してもウィンドウすら表示されないんですよね・・・プロセスとしては
javaw.exeが立ち上がっているのですが、全く動作する気配がありません。
カメラのLEDも無反応・・・

主様の環境ではどうでしょうか?

投稿: | 2014/06/23 14:31

何度も何度も・・・本当に申し訳ありません!

英語のページを解読しながら読んでいたら、原因が分かりました。
どうやらこのGSVideo、GStreamerというのを使っているそうなのですが、
Windows・Macにおいて、このGSTreamerのファイル群が入っているフォルダが、
libフォルダ内に入ってしまう問題がProcessing・Eclipse共に
あるようです。

exeファイルと同じ場所にgstreamerフォルダを移動して実行したところ、
動作が確認できました。

コメント欄を汚してしまい、本当にすみませんでした。

投稿: | 2014/06/23 15:05

自己解決されたようで何よりです。
コメントの際はお名前を入れていただけるとうれしいです。

Export Applicationの件は私も実は躓いていたので大変助かります。
今度チャレンジしてみます。

投稿: ひろき | 2014/06/24 01:42

はじめまして。投稿日から日数が経っているため返事を頂けるかわかりませんが、上記のコメント内容と同じ問題があり、質問させていただきたいです。私もexeファイルを作成しアプリケーションで起動しようとするとどうしてもカメラが起動できません。カメラ関連のフォルダーをexeファイルと同じ場所に移動させても同様です。なにか原因が分かりましたらアドバイスいただけたら幸いです。

投稿: gonzo | 2018/05/15 14:55

>gonzoさん
今は全くProcessingを触っておらずすっかり当時のことを忘れており、環境も残っていない状況です。
お役に立てずすいません。

投稿: ひろき | 2018/05/16 23:02

かしこまりました。ありがとうございます。

投稿: gonzo | 2018/05/17 12:48

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/29844/59027798

この記事へのトラックバック一覧です: 【Processing】 GSVideoでWebカメラを使う:

« ロボット・アスリートCUP2014 in はまぎんこども宇宙科学館 | トップページ | 【Processing】色識別 »