OpenCV 2.3とVisual Studio 2010でプログラミング#1

C#とEmguCVでプログラムを作成していましたが、処理速度とライブラリ関係の問題でC++環境に移行することにしました。

Native環境(Includeとかlibとか)には慣れてないので完全に最初からやります。このポストは記録保存用です。

まず作業環境から。

  • OS : Windows 7 Ultimate 64bit
  • IDE : Visual Studio 2010
  • GPU : Geforce GT 555M (最新のOpenCVはGPUで加速するらしいです)
ではまずOpenCV最新ソースコードをダウンロードします。SVNクライアントが必要です。Windows用のSVNクライアントはいろいろありますが、将来のことを考えてもうCygwinを入れることにしました。Cygwinの公式サイトからダウンロードしてインストールします。
Cygwinをインストールし終わったら、デスクトップにCygwinというショートカットができてるはずです。実行しましょう。

ここで次のコマンドを入力します。
svn co https://code.ros.org/svn/opencv/trunk opencv
そしてしばらく待つとcygwinのhomeフォルダにopencvというフォルダができます。最新のソースコードはその中に入ります。
すべてのソースコードのダウンロードが終わったらコンパイルしましょう。
OpenCVはCMakeという方法でプロジェクトが構成されています。これをVisual StudioでコンパイルするためにVisual StudioのSolution形式に変換する必要があります。Windows用のCMakeをダウンロードしましょう。CMakeの公式サイトでダウンロードできます。
ここでCmakeを実行する前に、NVIDIAのCuda用のSDKとToolsをインストールする必要があります。NVIDIAのCUDA Toolkitサイト
CUDA ToolkitとCUDA Toolkitを64bit用でダウンロードしてインストールします。またマルチコアCPUで処理するときのためにIntel TBBライブラリをダウンロードして適当なフォルダに解凍して置きます。
ここまでやったらCMake-guiを実行します。(この時点でCMakeのバージョンは2.8.5でした。)
Browse Source…をクリックし、OpenCVのソースが入っているフィルだを指定します。SVNでダウンロードした場合SVNで指定したフォルダにopencvとopencv_extraの二つのフォルダができてると思います。opencvの方を指定します。
Browse Build…をクリックしてコンパイルしたバイナリーファイルを保存するフォルダを指定します。
そしてConfigureをクリックし「Visual Studio 10 Win64」を選択し「Use default native compilers」にチェックが入ってるのを確認してください。そしてFinishをクリックします。すると次のような画面になります。

ここでWITH_TBBという項目にチェックを入れまたConfigureをクリックします。すると次のような画面になります。

赤で表示されているTBB_INCLUDE_DIRの「…」部分をクリックし、先に解凍したIntel TBBのフォルダの中にあるIncludeフォルダを指定します。そしてまたConfigureをクリック。するとIncludeフォルダを元にTBBのLibフォルダは自動で入力されます。最後にConfigureをクリックして赤い項目がないのを確認します。赤い項目がなくしたのログ画面にUse TBBとUse CudaがYESになってたらGenerateをクリックしてslnファイルを生成します。ここまでやったらCMakeを終了します。

CMakeで指定したBuildフォルダに生成されたOpenCV.slnをVisual Studio 2010で開きます。Build -> Batch BuildをクリックしALL_BUILDのDebugとReleaseにチェックをいれBuildをクリックします。そしてしばらく待つとOpenCVがビルドされます。

出来上がったOpenCVライブラリのlibとincludeとbinをプロジェクトの環境パスに追加することでOpenCVを利用する準備は完了します。

作成者: kkc0923

KANOTYPE管理者。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Note: Commenter is allowed to use '@User+blank' to automatically notify your reply to other commenter. e.g, if ABC is one of commenter of this post, then write '@ABC '(exclude ') will automatically send your comment to ABC. Using '@all ' to notify all previous commenters. Be sure that the value of User should exactly match with commenter's name (case sensitive).

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください