ビルド済みの普通のOpenCVをpythonでも使いたい!って場合は、Anacondaで神のサイトからwflをダウンロードが時短できておすすめ。
私の用にOpenCV自前ビルドやりたくないけど、、CUDA入りdll作りたいしって人達の参考になれば。
ツールのダウンロード
以下の環境でビルド
- Windows 10
- GPU GTX 1070
- Visual Studio 2015
- CUDA v9.1
- CMake 3.9.6
Visual Studio 2015
一番最近の2017パッチはまだ対応していないという情報があったので、一応Visual Studio 2015 Communityでビルド。
CMake-GUIで以下のエラーが出た場合は、c++環境がセットアップされていないので、
The CXX compiler identification is unknown The C compiler identification is unknown
CUDA
CUDAをインストールする。最新版v9.1で試す
CMake
CMakeをダウンロード
最新3.9.6を使った
OpenCV
OpenCV 3.4.0
OpenCV contlib 3.4.0
のアーカイブをダウンロードして展開する
CMake GUI設定
CMake-GUIを起動。Visual Studio 2015 64bitを選ぶ。 デフォルトのオプションから変更必要な部分。
Where is the source code
にOpenCV本体のフォルダを指定Where to build the binaries
に書き出しフォルダ、build
(何でもいい)を指定するOPENCV_EXTRA_MODULES_PATH
にcontrib/modulesのパスを指定CUDA_TOOLKIT_ROOT_DIR
のパスが設定されているか確認。NOT-FOUNDになってたりする。 私の環境はこちらC:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v9.1
CUDA_ARCH_BIN
は、使うものだけにするとビルドが早くなる。CUDAのビルドはすっごい時間かかるので他の環境で使わない場合は、使うものだけを設定するのが良いかと。自分の使っているGPUのアーキテクチャはこちらで確認できる(リンク見るためにはNVIDIAログイン必要). GTX1070, GTX1080なら、6.1だけでいい。- 多分以下のようなエラーがでるので。StackOverFlowを参考にCUDA_HOST_COMPILERを設定しなおす。簡単に言うとcl.exeのパスを設定する。
CMake Error at cuda_compile_generated_gpu_mat.cu.obj.cmake:206 (message): D:------/core/CMakeFiles/cuda_compile.dir/src/cuda/Debug/cuda_compile_generated_gpu_mat.cu.obj
設定するパスは私の場合はこちらC:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/cl.exe
- tuple errorが出るので、(参考)
BUILD_PREF_TEST : OFF
にした - Open Projectボタン → Visual Studio 開く→INSTALLを実行 →結構待つ
これで恐らくビルドできるので、インストールしたファイルを使いやすいところにコピーして、環境変数設定をする。今回はC:\Program Files\OpenCV\3.4.0
にインストールした。 (キャプチャは3.3.1だけど)
ちなみに、opencv_worldをビルドすると、すべてのdllが一つにまとまって楽だけど、ビルドが数時間かかるって、エラーでたときの辛さが増すので、小分けにするのがおすすめかも。
Visual Studioでの設定
OpenCV をVisual Studio Projectでリンクする方法はこちらを参考に Additional Include Directories, Additional Library Directories を設定する。