読者です 読者をやめる 読者になる 読者になる

CmakeでVisual StudioのOpenCVの設定を簡単にするには

CUDA

この記事は、CUDAとVisual Studioがあらかじめ入ってる前提で説明しています。

CUDA環境下でOpenCVを使用するためにはCMakeを利用する方法が一押しです。 CMakeを使えば、Visual StudioでOpenCVの以下の設定をする必要がなくなります。

  • 共通プロパティ→C/C++→全般→追加のインクルードディレクトリ
  • 共通プロパティ→リンカー→全般→追加のライブラリディレクトリ

まだOpenCV自体をビルドし、用意が完了していない方は以下の記事を参考にして下さい。

www.mataro1.com

作業環境

  • 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」)をスタートアッププロジェクトに設定し、ビルドすればビルド完了です。

別途、ソースコードを追加して下さい。

おすすめ記事

www.mataro1.com