※プロダクトとかではなくとりあえず動けばいい人用
やること
ダウンロード
OpenCV
GitHub - opencv/opencv: Open Source Computer Vision LibraryOpenCV's extra modules
GitHub - opencv/opencv_contrib: Repository for OpenCV's extra modulesCMake
Installing | CMakeVisual Studio
英語の言語パックをダウンロードして変更しておくとエラー文が検索しやすくておすすめです。
最低限C++をインストールしておきますPythonもインストールもしておくとPython用のもビルドされます。
Visual Studio IDE、コード エディター、Azure DevOps、App Center - Visual Studio
注意
OpenCVとmodulesは同じバージョンにしてください。
Problem compiling opencv_contrib/modules/cudaimgproc/src/cuda/clahe.cu(128): error: identifier "PtrStepus" is undefined · Issue #13984 · opencv/opencv · GitHub
CMake
とりあえず設定したらConfigureします。新しい設定とか出てきます。
現時点では2019ではビルドできませんでした。最新版でビルドできなかった時は古いバージョンを使ってみましょう。
x64なのでそれを明示します。
「PENCV_EXTRA_MODULES_PATH」を設定します。バックスラッシュではなくスラッシュを使用しましょう。
Javaで使う
AntとJNIにパスを通します。
Configureして以下のように出力されたことを確認してください。
Java wrappers: YES
Cudaを使う
Cudaのインストールはここでは省きます。
「WITH_CUDA」にチェックを付けます。
Configureすると「CUDA_ARCH_BIN」と「CUDA_ARCH_BIN」が出てくるので設定します。自分はRTX 2070なので10です。でもConfigureすると7.5に書き換えられるのでそこまで対応されてないって感じなのでしょうか。とりあえず調べて自分のハードウェアに合ったものを入力しておけば間違いなさそうです。 「CUDA_ARCH_BIN」はTuringです。
最後
GenerateしてOpen Projectします。
ビルドする
OpenCVデバッグするわけじゃないしReleaseにするか、などとすしてハマった。
用途によってReleaseとDebugを使い分けましょう。
Releaseを使うなら全ての場所でReleaseに統一、Debugを使うならすべての場所でDebugで統一すればハマらないでしょう。
INSTALLを右クリックしてビルドします。
intel-8700Kを使っていますが30分以上かかりました。長い。
完了するとinstallディレクトリが作成され、以下に成果物があります。
使用する
Windowsのシステム環境変数の編集から「install\x64\vc15\bin」にPathを通します。
C++
CLionでやります。
C++のプロジェクトを作ってください。
CMakeLists.txtとmain.cppがあるはずです。
CMakeLists.txtの設定
「/path/to/install/」だけ適切なのにすれば動くはず。
「/path/to/なんとか」は適切なパスに自分で設定しろって事です。よく出てくるので覚えておきましょう。
# project settings cmake_minimum_required(VERSION 3.10) set(CMAKE_CXX_STANDARD 14) project(opencv_sample) # setup opencv set(OpenCV_DIR "path/to/install/") find_package(OpenCV REQUIRED) # build add_executable(opencv_sample main.cpp) # link OpenCV target_link_libraries(opencv_sample ${OpenCV_LIBS})
OpenCVのビルドでReleaseにした人は以下を追加します。
set(CMAKE_BUILD_TYPE Release)
DebugかReleaseかで読み込むlibファイル(末尾がd.lib)変えてるのかなぁ。ちょっとここわからない。
cudaのテストは以下を使えば良いのでは。
cv::cuda::threshold
Java
IDEはIntelliJを使いました。ビルドにはgradleを使用します。
以下を追加すれば動きます。
build.gradle
dependencies { compile files('path/to/install/java/opencv-346.jar') } tasks.withType(JavaExec) { systemProperty "java.library.path", file("path/to/install/x64/vc15/lib") }
おわり
色々な所にハマって疲れた。
Visual Studioでのセットアップも書こうとしたけどよく分からなかった。
書いたビルド設定が読みにくいXMLの中に入るのが微妙なんだよな。