えっと技術的なことをつらつらと書きます
OpenCVを使ってカメラのキャプチャを行う場合
フレームレート、ビデオフォーマット、解像度、等が設定できない場合があります
とりわけ、OpenCV 1.0の場合は全然できません
プロパティを設定するcvSetCaptureProperty()という関数の実装が不完全であり、
設定できない項目がかなりたくさんあります
cvCaptureFromCAM()、もしくはcvCreateCameraCapture()を呼ぶと勝手に決められちゃうので
それ以降の変更ができない場合があります
どうしてもOpenCVだけで行いたい場合は、highgui.hの中身を書き換えなきゃならない
でも、書き換える内容はカメラのCD付属の開発用のサンプルプログラムを読まないとわからないので
それがDirectShowを使っていたりすると絶望的なんです
ちなみにOpenCV 2.xでも設定できない項目多数です
これは未確認ですが、先にRGBフォーマットを見つけてしまうと
OpenCVがYUVフォーマットを無視してキャプチャしてくれちゃうらしいです
そんなわけで、OpenCVのみでキャプチャを行うのは非常に不便
ただちょろんっと画像をとってくるだけならいいけど、フォーマット、解像度など設定したい場合は非常に不便
というか、cvCreateCameraCapture()とcvSetCaptureProperty()、cvQueryFrame()でキャプチャしてみて、
ダメそうならさっさと他の方法を考えるべきです
というわけでvideoInputLibraryを入れてみました
そんなに書き換える部分が多くなくてうれしいです
videoInputLibraryを挟めば、ちゃんとYUVの方で認識してくれたので解像度の変更もできました
これ以外だと、あとはもうDirectShowを使うしかないです
それもまた面倒な話ですね