CmakeでVisual StudioのOpenCVの設定を簡単にするには
この記事は、CUDAとVisual Studioがあらかじめ入ってる前提で説明しています。
CUDA環境下でOpenCVを使用するためにはCMakeを利用する方法が一押しです。 CMakeを使えば、Visual StudioでOpenCVの以下の設定をする必要がなくなります。
- 共通プロパティ→C/C++→全般→追加のインクルードディレクトリ
- 共通プロパティ→リンカー→全般→追加のライブラリディレクトリ
まだOpenCV自体をビルドし、用意が完了していない方は以下の記事を参考にして下さい。
作業環境
- Visual Studio 2013 Community(x64)
- CUDA7.5
- CMake3.6.2
- OpenCV3.1
- Windows7 64ビット
Cmakeでプロジェクトを簡単に作成
それでは、CMakeでプロジェクトをビルドする方法を紹介していきます。
システム環境変数のパスの確認
OpenCVのシステム環境変数のパスの確認をまずしておきましょう。
後ほど、必要になるので先に済ませておいた方が良いです。
システム環境変数に以下を追加してください。すでに作成済みの方はこの作業を飛ばしてください。
また、「C:\opencv\build」はご自身の環境によって変わります。
OPENCV_DIR C:\opencv\build;
プロジェクトようにフォルダとソースコードを用意
新しいプロジェクト用のフォルダとソースコードを用意します。
作業用フォルダなどに、openCVtestなどのフォルダを用意しましょう。
その中に、以下のようなソースコードを書くファイルを用意します。
Cmake用にファイルを用意
CmakeLists.txtをソースコードのあるフォルダ(この説明ではopenCVtest)に用意してください。 CmakeLists.txtのソースコードは以下のようになります。 gencode arch=compute_52,code=sm_52の数字「52」は、GPUのCompute Capabilityに合わせて変更してください。
CMAKE_MINIMUM_REQUIRED(VERSION 2.8) FIND_PACKAGE(OpenCV REQUIRED) FIND_PACKAGE(CUDA REQUIRED) FILE(GLOB SOURCES "*.cu" "*.cpp" "*.c" "cuh" "*.h" "*.hpp") IF(CUDA_FOUND) SET(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS};-std c++11") SET(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS};-gencode arch=compute_52,code=sm_52") IF(OpenCV_FOUND) CUDA_INCLUDE_DIRECTORIES(${OpenCV_INCLUDE_DIRS}) CUDA_ADD_EXECUTABLE(openCVtest ${SOURCES}) INCLUDE_DIRECTORIES(${OpenCV_INCLUDE_DIRS}) TARGET_LINK_LIBRARIES(openCVtest ${OpenCV_LIBS}) ENDIF(OpenCV_FOUND) ENDIF(CUDA_FOUND)
Cmakeでプロジェクトを生成
OpenCV 3.0以降をお使いの方はCmakeをパソコンにインストール済みだと思います。 Cmakeをインストールしていない方はインストールしてください。
Cmakeを起動したら、 以下の2箇所にフォルダのパスを設定します。
- Where is the source code
- Where to build the binaries
の2箇所にソースコードやCmakeLists.txtのを入れたフォルダのパスを設定してください。
後はConfigureボタンを押し、エラーが出なかったら第一段階の完了です。
次にGenerateボタンを押し、エラーなくProject.slnが出力されたら完了です。
後は、Projextを起動し、ALL_BUILDではなく、設定したプロジェクト名(ここでは「openCVtest」)をスタートアッププロジェクトに設定し、ビルドすればビルド完了です。
別途、ソースコードを追加して下さい。