*OpenCV/videoInput Libraryによるビデオキャプチャ [#o43af61b] ここでは,DirectShowによるビデオキャプチャを簡単に行うことができるライブラリ [[videoInput Library:http://muonics.net/school/spring05/videoInput/]] &br;と[[OpenCV:http://www.intel.com/technology/computing/opencv/index.htm]]を組み合わせたサンプルプログラムを紹介します. ''[注意1]''&br;OpenCV 1.1pre1からvideoInput LibraryがOpenCVに組み込まれるになったため,&br;OpenCVのcvSetCaptureProperty関数にてキャプチャサイズ(幅,高さ)の設定が有効が有効になります.&br;&br;一方,videoInput0.1995から設定が可能となっているフレームレートについては&br;OpenCV 1.1pre1のcvSetCaptureProperty関数から設定できないようです. そのため,現状,フレームレートを制御したい場合にはvideoInputを&br; 直接扱う方が簡単かもしれません.以降のソースコードはvideoInputにより&br; キャプチャサイズ,フレームレートを設定してキャプチャを行う例となっています. **前準備 [#se8b3759] まず,Windows SDK,もしくはPlatform SDKをインストールしましょう(※OpenCV/VS 2005でCVCAMを使う参照).&br;[[OpenCV:http://sourceforge.net/projects/opencvlibrary/]]のインストールは[[OpenCV@Chihara-Lab.:http://chihara.naist.jp/opencv/]]を参照. **videoInput Libraryのセットアップ [#l46ef962] [[videoInput Library開発サイト:http://muonics.net/school/spring05/videoInput/]]より,(2009/8/29時点)最新の''videoInput0.1995.zip''をダウンロードし,展開します.&br;今回のサンプルでは以下のファイルをプロジェクトに追加しました. ''[ライブラリ]'' videoInput0.1995\compiledLib\compiledByVS2005\ にあるvideoInput.lib ''[ヘッダ]'' videoInput0.1995\compiledLib\compiledByVS2005\include にあるvideoInput.h **ビルド時にatlthunk.lib リンカエラーが出たら [#fa6c9983] プロジェクト-プロパティ-構成プロパティ-リンカ-コマンドライン-追加のオプション に /NODEFAULTLIB:"atlthunk" と記述します. **サンプルプログラム [#nf1e34c3] videoInput Libraryを使ったサンプルプログラムを 以下に示します.&br;サンプルプログラム1,サンプルプログラム2 ともに見た目の結果は同じです. ***サンプルプログラム1(memcpy版) [#gee03066] #code(c,nooutline,nonumber,http://www.atinfinity.info/opencv/sample/CapureVI_memcpy.cpp) VI.getPixels関数で取得した情報をmemcpy関数でImageDataにコピー. ***サンプルプログラム2 [#k2f0b4d2] #code(c,nooutline,nonumber,http://www.atinfinity.info/opencv/sample/CaptureVI.cpp) この方法だと一見,ImageDataのアドレスを上書きしていてcvReleaseImageで正しく解放できなくなるように見えますが,実は大丈夫です.&br; 詳細が知りたい方は[[dandelion's log » cvReleaseImageの挙動について:http://www.atinfinity.info/blog/archives/99]]に 説明を書いたので参照ください. **Visual Studio2005プロジェクトファイル [#y4680ec2] キャプチャ画像をウィンドウに表示するプログラムです.&br; ※間違い・御指摘等ありましたら,Contactより連絡ください. #ref(http://www.atinfinity.info/opencv/sample/CaptureVI.zip) **補足 [#e98ea6d4] videoInput.h にサンプルプログラムやvideoInputクラスの&br; 各種メンバ関数について説明が記述されており参考になります.