wiki:misc/processing/setup_camera

Version 1 (modified by obina, 10 years ago) (diff)

--

USカメラの接続

  • PCにUSBカメラを接続。ノートPCの場合は内臓カメラでもOK
  • カメラのリストをチェックするため、以下のプログラムを入力してsketch_140807bとして保存。
    import processing.video.*;
    
    Capture cam;
    
    void setup() {
      size(640, 480, P3D);
      String[] cameras = Capture.list();
    
      for (int i=0; i<cameras.length; i++) {
        println(i, cameras[i]);
      }
    }
    
    void draw() {
    }
    
    
    • 実行例(ここで使っているのは会議用の広角USBカメラ Buffalo BSW20KM11)
    • コードを書いたウィンドウの下にある出力画面に以下の表示が出る
      0 name=USB_Camera,size=640x480,fps=30
      1 name=USB_Camera,size=160x120,fps=30
      2 name=USB_Camera,size=176x144,fps=30
      3 name=USB_Camera,size=320x240,fps=30
      4 name=USB_Camera,size=352x288,fps=30
      5 name=USB_Camera,size=800x600,fps=10
      6 name=USB_Camera,size=1280x720,fps=8
      7 name=USB_Camera,size=1920x1080,fps=5
      8 name=USB_Camera,size=640x480,fps=30
      9 name=USB_Camera,size=160x120,fps=30
      10 name=USB_Camera,size=176x144,fps=30
      11 name=USB_Camera,size=320x240,fps=30
      12 name=USB_Camera,size=352x288,fps=30
      13 name=USB_Camera,size=800x600,fps=30
      14 name=USB_Camera,size=1280x720,fps=30
      15 name=USB_Camera,size=1920x1080,fps=30
      
    • これをみると、640x480, fps=30 が適当なのでカメラ番号 0 が良さそう。これを使って画像取り込み、表示をおこなう。
  • ファイルを以下のように変更して実行
    import processing.video.*;
    
    Capture cam;
    
    void setup() {
      size(640, 480, P3D);
      String[] cameras = Capture.list();
    
      cam = new Capture(this, cameras[0]); // select cam 0
      cam.start(); // start camera  
      
    }
    
    void draw() {
      background(0);      // clear (black) backgound
      cam.read();         // read camera image
      image(cam, 0, 0);   // show camera image
    }
    

  • 実行結果:ちゃんと動画が表示できている

  • cam 0 .. 12 までの解像度・fpsでは問題なく表示できているが、 cam13,14,15については黒色のまま何も表示されない
    • 当面は問題ないが、せっかくハードが 1920x1080 30fps 対応しているなら表示したい