PCに接続されているWebカメラの映像を表示するだけのソフトを作りました (ソースコード付き)
メディアアート製作やインタラクション系の研究に携わっている人なら、一度はWebカメラをシステムの一部として使ったことがあるでしょう。それはノートPCに内蔵されたチャット用Webカメラだったり、USBカメラだったり、USBビデオキャプチャだったりするわけですが、不思議なことにそういうものをテストするためのまっとうな道具がろくにありません。
Webカメラ付属のソフトウェアが使いにくいのはもはや常識で(Lで始まる会社を毎度呪ってる人も多いはず)、それ以外の候補としてSkypeみたいなビデオチャットツールを使ったり、「ふぬああ」みたいなビデオキャプチャツールを使ったり、はたまたWebカメラを使うFlashが埋め込まれたWebサイトを表示させたりと、各自が突貫工事的な方法でやりこなしてるのが実情でしょう。ええ、よくわかります。
というわけで、Webカメラのテスト用のシンプルなツールを作ることにしました。
CameraViewer
できること:
※初公開時から地味に機能が追加されてます。
ダウンロード:
- こちらのページに置いてます: BACKYARD - 工学ナビ
- Windows用。ソースコード付き。
- 起動時に「サイドバイサイド構成が正しくないため、アプリケーションを開始できませんでした」というエラーが表示されたら、 Microsoft Visual C++ 2008 SP1 再頒布可能パッケージ (x86)をインストールしてください。
まさにシンプル・イズ・ベスト。見る人が見れば「はいはい欲しいのはこういうのです」と首をガクガクさせながら言ってくれるはず。フルスクリーン表示が結構便利で、プレゼンのときに書画カメラ的に使っています。ちなみにこのソフトを複数起動して複数のカメラを同時にモニタすることもできます。
手抜き事項
1つ手抜きがありまして、一覧に表示される解像度とFPSはデバイスから取得した情報ではなく、 設定ファイル(config.txt)であらかじめ用意されたパラメータです。なので、実際に設定可能かはデバイスごとに試してみる必要はありますが、実用上これでさほど問題ないと思うので今はご勘弁を。
コードについて
中身はVisualC++でMFCベースで書かれています。キャプチャ部分はOpenCVに頼りっぱなし。デバイス名を列挙したり、S端子とかコンポジットみたいなピンを列挙したり、明るさや露出を制御したりというキャプチャ関係のもう少し立ち入った処理はDirectShowでうーにゃーする必要があるんですが、その辺は昔こってりやってシンドイのを知ってるので、今回はパスです(最新のOpenCVはその辺どうなのか知りませんが)。
なお、さっきのダウンロードページの下のほうにある「ExImage Library」の中にはDirectShowのこってりしたコードが入ってるので興味のある人はそちらをご参照ください。