2013年11月29日金曜日

Raspberry PiにWebカメラを繋げて動画撮影してみたが


すっかり秋も深まり、毎日寒くなってきました。Raspberry Piにカメラを繋げていろいろ面白いことしたくなる季節です。

Raspberry Piのカメラといえば、Camera Boardが定番です。 OmniVisionの5MP裏面照射型CMOSセンサを積んでいて、FullHD 30fpsの動画撮影にも対応、MIPIインタフェースでRPiと接続するモジュールです。ボード上の専用コネクタにフレキで繋ぐようになっています。

それから最近、赤外線イメージセンサ搭載のPiNoirというカメラモジュールも発売されたみたいですね。夜目の利くRPiも楽しそう。

でも今のところ私はRPi用のカメラモジュールを持っていません。そこで、家に転がっていたUSB接続のWebカメラを繋いでちょっと遊んでみます。

使用したのは、バッファローさんのBSW32KM01H。UVC対応なのでLinuxでもばっちりです。早速繋いでみる。dmesgとlsusbはこんな感じ。
自動的にuvcvideoドライバがロードされ、/dev/video0が追加されているはずです。では、ビデオ録画を試してみます。まずffmpegをインストールします。
ffmpegコマンドを使ってカメラ録画しファイルに書き出します。 なんとなく、flvだとうまくいったのでとりあえず。

それで、録画したファイルをWinSCPとかでWindowsに持ってきてプレーヤーで再生してみるわけですが。。数秒は撮影したはずなのに、一瞬で再生が終わってしまう!
何故?もう一度撮り直してみると、、、
1fpsしか出てない!

うーん、何だろう。。エンコードが重い?topでCPU使用率見ても、だいたい10~30%くらいなんだけどなぁ。
まぁ気が向いたら追い追い見てみますか。

カメラ繋いだついでに静止画撮影もしてみましょう。まずuvccaptureをインストール。
で、とりあえず撮影。
これでカレントディレクトリにsnap.jpgができます。見てみるとちょっとホワイトバランスがおかしいんですが、その辺は調整できるようです。一応、撮影はできました。


カメラモジュール買うかなぁ。


参考情報
How to stream from the linux (ubuntu :) command line to UStream - KnowledgeVoid
How to capture a webcam input - FFmpeg
uvccaptureで画像取得 - ともの技術メモ

1 件のコメント: