CmakeでOpenCV3.1.0を超簡単・高速にビルドやインストールするには

f:id:mataro1:20161001161644j:plain私はCUDA用にOpenCVをVisual Studioで使うためにOpenCVをビルドしました。
OpenCV3.0からビルドする必要がありますが、なかなかに面倒だったので、超簡単かつ高速にビルドする方法をまとめておきます。

しかし、Cmakeを使えば、あっという間にOpenCVをインストールすることができます。また、Cmakeの使い方はとても簡単ですので、今回紹介するやり方はおすすめです。

一応、CUDAとVisual Studioはあらかじめ入ってる前提で説明させていただきます。

作業環境

  • Visual Studio 2013 Community(x64)
  • CUDA7.5
  • OpenCV3.1
  • Windows7 64ビット

CMakeでOpenCVをビルド

OpenCVのSource code (zip)をgitからダウンロード。もしくはopencv-3.1.0.exeをダウンロードして、実行してopenCVを用意しておいてください。

Release OpenCV 3.1 · opencv/opencv · GitHub

openCVは以下のようにC直下に置くことを推奨します。また、フォルダ名は「opencv」とシンプルにしましょう。

C:\opencv

OpenCV 3.1ビルド用バッチファイルを以下のサイトからダウンロードもしくはコピーして用意。

OpenCV 3.1ビルド用バッチファイル(VS2013/64bit/WITH_CUDA/WITH_QT) · GitHub

私の環境下では以下のように変更しています。上記をそのまま使うと、QTもビルドすることになります。今回はOpenCVのみをCUDAで使えるようにするためです。

:: setting of the environment variables
set SOURCE_DIR=%~dp0
set BUILD_DIR=%SOURCE_DIR%\build
set INSTALL_DIR=%BUILD_DIR%\install
set VC_VERSION_NUM=12
set VCVARSALL_BAT="C:\Program Files (x86)\Microsoft Visual Studio %VC_VERSION_NUM%.0\VC\vcvarsall.bat"
set ARCH=amd64
set GENERATOR_NAME=Visual Studio %VC_VERSION_NUM% Win64
set QT5_DIR=C:\Qt\Qt5.5.0\5.5\msvc2013_64

call %VCVARSALL_BAT% %ARCH%

mkdir build
cd build

:: runnig CMake
cmake.exe ^
-G "%GENERATOR_NAME%" ^
--build "%BUILD_DIR%" ^
-D BUILD_CUDA_STUBS=OFF ^
-D BUILD_DOCS=OFF ^
-D BUILD_EXAMPLES=OFF ^
-D BUILD_JASPER=ON ^
-D BUILD_JPEG=ON ^
-D BUILD_OPENEXR=ON ^
-D BUILD_PACKAGE=ON ^
-D BUILD_PERF_TESTS=OFF ^
-D BUILD_PNG=ON ^
-D BUILD_SHARED_LIBS=ON ^
-D BUILD_TBB=OFF ^
-D BUILD_TESTS=OFF ^
-D BUILD_TIFF=ON ^
-D BUILD_WITH_DEBUG_INFO=ON ^
-D BUILD_WITH_STATIC_CRT=ON ^
-D BUILD_ZLIB=ON ^
-D BUILD_WEBP=ON ^
-D BUILD_opencv_apps=ON ^
-D BUILD_opencv_calib3d=ON ^
-D BUILD_opencv_core=ON ^
-D BUILD_opencv_cudaarithm=ON ^
-D BUILD_opencv_cudabgsegm=ON ^
-D BUILD_opencv_cudacodec=OFF ^
-D BUILD_opencv_cudafeatures2d=ON ^
-D BUILD_opencv_cudafilters=ON ^
-D BUILD_opencv_cudaimgproc=ON ^
-D BUILD_opencv_cudalegacy=ON ^
-D BUILD_opencv_cudaobjdetect=ON ^
-D BUILD_opencv_cudaoptflow=ON ^
-D BUILD_opencv_cudastereo=ON ^
-D BUILD_opencv_cudawarping=ON ^
-D BUILD_opencv_cudev=ON ^
-D BUILD_opencv_features2d=ON ^
-D BUILD_opencv_flann=ON ^
-D BUILD_opencv_highgui=ON ^
-D BUILD_opencv_imgcodecs=ON ^
-D BUILD_opencv_imgproc=ON ^
-D BUILD_opencv_java=OFF ^
-D BUILD_opencv_ml=ON ^
-D BUILD_opencv_objdetect=ON ^
-D BUILD_opencv_photo=ON ^
-D BUILD_opencv_python2=OFF ^
-D BUILD_opencv_python3=ON ^
-D BUILD_opencv_shape=ON ^
-D BUILD_opencv_stitching=ON ^
-D BUILD_opencv_superres=ON ^
-D BUILD_opencv_ts=ON ^
-D BUILD_opencv_video=ON ^
-D BUILD_opencv_videoio=ON ^
-D BUILD_opencv_videostab=ON ^
-D BUILD_opencv_viz=OFF ^
-D BUILD_opencv_world=OFF ^
-D CMAKE_CONFIGURATION_TYPES="Debug;Release" ^
-D CMAKE_INSTALL_PREFIX="%INSTALL_DIR%" ^
-D EIGEN_INCLUDE_PATH="C:/dev/eigen-3.2.6/build/install/include/eigen3" ^
-D TBB_INCLUDE_DIR="C:/dev/tbb44_20151115oss/include" ^
-D CUDA_ARCH_BIN="5.2" ^
-D CUDA_ARCH_PTX="" ^
-D WITH_1394=OFF ^
-D WITH_CUBLAS=ON ^
-D WITH_CUDA=ON ^
-D WITH_CUFFT=ON ^
-D WITH_DIRECTX=ON ^
-D WITH_DSHOW=ON ^
-D WITH_EIGEN=ON ^
-D WITH_FFMPEG=ON ^
-D WITH_GDAL=OFF ^
-D WITH_GIGEAPI=OFF ^
-D WITH_INTELPERC=OFF ^
-D WITH_IPP=ON ^
-D WITH_IPP_A=OFF ^
-D WITH_JASPER=ON ^
-D WITH_JPEG=ON ^
-D WITH_MSMF=ON ^
-D WITH_NVCUVID=OFF ^
-D WITH_OPENCL=ON ^
-D WITH_OPENCLAMDBLAS=OFF ^
-D WITH_OPENCLAMDFFT=OFF ^
-D WITH_OPENCL_SVM=OFF ^
-D WITH_OPENEXR=ON ^
-D WITH_OPENGL=ON ^
-D WITH_OPENMP=OFF ^
-D WITH_OPENNI=OFF ^
-D WITH_OPENNI2=OFF ^
-D WITH_PNG=ON ^
-D WITH_PVAPI=OFF ^
-D WITH_QT=OFF ^
-D WITH_TBB=ON ^
-D WITH_TIFF=ON ^
-D WITH_VFW=OFF ^
-D WITH_VTK=OFF ^
-D WITH_WEBP=ON ^
-D WITH_WIN32UI=OFF ^
-D WITH_XIMEA=OFF %SOURCE_DIR%

:: Building the OpenCV(Debug/Release) using Visual Studio
devenv /build "Debug|x64" /project "INSTALL" OpenCV.sln
devenv /build "Release|x64" /project "INSTALL" OpenCV.sln

注意点は2つあります。
Visual StudioバージョンとGPUのCapability番号の指定です。 バッチのVC_VERSION_NUMの番号はVisual Studioのバージョンに合わせて変更してください。Visual Studio 2013は、VC_VERSION_NUM=12です。

バッチのCUDA_ARCH_BINはNVIDIAの公式サイトからご自分のGPUに合わせた番号に変更してください。私はGTX950(GPU Capability=5.2)を使用しているので、CUDA_ARCH_BIN=5.2です。ここまでで完了して、opencv3.1_build_vs2013_x64-with-qt5.batの用意は終了です。

opencv3.1_build_vs2013_x64-with-qt5.bat(バッチファイル)は、OpenCVのルートディレクトリに配置します。

C:\opencv/opencv3.1_build_vs2013_x64-with-qt5.bat

Visual Studio 開発者用コマンドプロンプトを起動します。 起動方法は「スタート→プログラムとファイルの検索」で、Visual Studioと入力すれば、コマンドプロンプトが候補として表示されるはずなので、クリックしてください。それか以下のパスからコマンドプロンプトを起動できます。

C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\Shortcuts

コマンドプロンプト起動後、OpenCVのルートディレクトリに移動します。Linux系のコマンドで何とかopencvのフォルダにたどり着いてください。

C:\opencv/

コマンドプロンプトに以下のコマンドを入力すれば、自動でビルドが始まります。

opencv3.1_build_vs2013_x64-with-qt5.bat

ビルド完了後は、パスの設定です。 システム環境パスのPathには、以下のパスを追加します。

C:\dev\opencv\build\x64\vc12\bin

ここまで完成したら、パソコンを一応再起動します。そしたら、完了です。

おすすめ記事

www.mataro1.com