OpenCV-Contribをビルドする(後編インストール)
OpenCV-Contribを使いたいのでOpenCVと一緒にビルドしました。
OpenCVだけでよい場合はSourceForceからexeファイルをダウンロードすれば使えるようになります。
前編はこちらです
インストール環境
Windows 10 (64 bit)
PowerShell (途中からAnaconda Powershell Prompt) のコマンドを使用
必要なアプリケーション
Visual Studio Community 2017
git for windows
CMake
Anaconda (python)
少なくとも上の4つがインストールされているという前提で話を進めます。Visual Studio 2019 は不可。下の3つはオプションです。
CUDA 10.2
Qt 5.14.1
VTK 8.2.0
OpenCV+OpenCV-Contribのインストール
Anaconda Navigater をスタートメニューから起動します
左端の Environments をクリックして、下にある Create をクリックして仮想環境を作ります。
名前を py_opencv
にします。
Power Shell Prompt も py_opencv に Anaconda Navigator からインストールします。
conda create -n py_opencv
でも作成できますが仮想環境のフォルダが C:\Users\ユーザー\anaconda3\envs\py_opencv
の中が空になっていたので Anaconda Navigater で作ることをおすすめします。
作成した仮想環境py_opencvを Anaconda Navigater で立ち上げて、Power Shell Prompt を Anaconda Navigater から起動します。
すると
(py_opencv) PS C:\Users\ユーザー>
のように表示され初めから仮想環境が立ち上がります。
次に作業用フォルダを作成してOpenCVのソースをgithubからダウンロードします。
# 作業用のフォルダ作成 mkdir c:\build\opencv410 cd c:\build\opencv410 # OpenCVのソース取得 git clone https://github.com/opencv/opencv.git # OepnCV Contribのソース取得 git clone https://github.com/opencv/opencv_contrib.git
次にCMakeでビルドします。仮想環境の中で実行することでCMakeが適切なpythonのディレクトリを自動で見つけてくれます。
#numpyのインストール(必ず実行) pip install numpy # ビルド cd C:\build\opencv410\opencv mkdir build cd build cmake ../ -DBUILD_JAVA:BOOL=0 ` -DBUILD_opencv_java_bindings_generator:BOOL=0 ` -DBUILD_PERF_TESTS:BOOL=0 ` -DBUILD_TESTS:BOOL=0 ` -DCMAKE_INSTALL_PREFIX:PATH=C:/lib/OpenCV410 ` -DCPU_BASELINE:STRING=AVX2 ` -DCPU_DISPATCH:STRING=AVX2 ` -DCUDA_ARCH_BIN:STRING=7.5 ` -DCUDA_ARCH_PTX:STRING=7.5 ` -DCUDA_FAST_MATH:BOOL=1 ` -DCUDA_GENERATION:STRING=Turing ` -DINSTALL_PYTHON_EXAMPLES:BOOL=1 ` -DOPENCV_ENABLE_NONFREE:BOOL=1 ` -DOPENCV_EXTRA_MODULES_PATH:PATH=C:/build/opencv410/opencv_contrib/modules ` -DWITH_CUDA:BOOL=1 ` -DWITH_QT:BOOL=1 ` -G "Visual Studio 15 2017 Win64"
CUDA と Qtがいらないなら -DWITH_CUDA:BOOL=0
, -DWITH_QT:BOOL=0
にします。
C:\build\opencv410\opencv\build
の中に OpenCV.sln
が生成されているので Visual Studio 2017 で開きます。
Visual Studio 2017の メニュー → ビルド → バッチビルド を選択して、プロジェクトが ALL_BUILD と INSTALL の行の Release
と Debug
の両方の チェックボックス にチェックを入れて リビルド をクリックします。
するとC:\lib\OpenCV410
の中にインストールされます。
最後に環境変数pathを通しておきます。
# OpenCVのpathを通す $SystemPath = [System.Environment]::GetEnvironmentVariable("Path","User") $SystemPath += ";C:\lib\OpenCV410\x64\vc15\bin" [System.Environment]::SetEnvironmentVariable("Path",$SystemPath,"User")
Visual Studio で使う
VisualStudio(2019でも可)で使いたい場合はプロジェクトのプロパティの構成を すべての構成
に、プラットフォームを x64
に切り替えてから
プロジェクトのプロパティ → デバッグ → 環境 に C:\lib\OpenCV410\x64\vc15\bin
プロジェクトのプロパティ → VC++ディレクトリ → インクルードディレクトリ に C:\lib\OpenCV410\include
プロジェクトのプロパティ → VC++ディレクトリ → ライブラリディレクトリ に C:\lib\OpenCV410\x64\vc15\lib
プロジェクトのプロパティ → C/C++ → 追加のインクルードディレクトリ に C:\lib\OpenCV410\include
プロジェクトのプロパティ → リンカー → 追加のライブラリーディレクトリ に C:\lib\OpenCV410\x64\vc15\lib
を入力します。
プロパティの構成を Debug
に切り替えて、
PowerShellで以下を実行したあとに
Get-ChildItem C:\lib\OpenCV410\x64\vc15\lib\*.* -Include *d.lib -Name | clip
プロジェクトのプロパティ → リンカー → 追加の依存ファイルの入力欄を開いてCTRL+Vを実行もしくは以下をコピペします。
opencv_aruco430d.lib opencv_bgsegm430d.lib opencv_bioinspired430d.lib opencv_calib3d430d.lib opencv_ccalib430d.lib opencv_core430d.lib opencv_cudaarithm430d.lib opencv_cudabgsegm430d.lib opencv_cudacodec430d.lib opencv_cudafeatures2d430d.lib opencv_cudafilters430d.lib opencv_cudaimgproc430d.lib opencv_cudalegacy430d.lib opencv_cudaobjdetect430d.lib opencv_cudaoptflow430d.lib opencv_cudastereo430d.lib opencv_cudawarping430d.lib opencv_cudev430d.lib opencv_cvv430d.lib opencv_datasets430d.lib opencv_dnn430d.lib opencv_dnn_objdetect430d.lib opencv_dnn_superres430d.lib opencv_dpm430d.lib opencv_face430d.lib opencv_features2d430d.lib opencv_flann430d.lib opencv_fuzzy430d.lib opencv_gapi430d.lib opencv_hdf430d.lib opencv_hfs430d.lib opencv_highgui430d.lib opencv_imgcodecs430d.lib opencv_imgproc430d.lib opencv_img_hash430d.lib opencv_intensity_transform430d.lib opencv_line_descriptor430d.lib opencv_ml430d.lib opencv_objdetect430d.lib opencv_optflow430d.lib opencv_phase_unwrapping430d.lib opencv_photo430d.lib opencv_plot430d.lib opencv_quality430d.lib opencv_rapid430d.lib opencv_reg430d.lib opencv_rgbd430d.lib opencv_saliency430d.lib opencv_shape430d.lib opencv_stereo430d.lib opencv_stitching430d.lib opencv_structured_light430d.lib opencv_superres430d.lib opencv_surface_matching430d.lib opencv_text430d.lib opencv_tracking430d.lib opencv_video430d.lib opencv_videoio430d.lib opencv_videostab430d.lib opencv_xfeatures2d430d.lib opencv_ximgproc430d.lib opencv_xobjdetect430d.lib opencv_xphoto430d.lib
プロパティの構成を Release
に切り替えて、
PowerShellで以下を実行したあとに
Get-ChildItem C:\lib\OpenCV410\x64\vc15\lib\*.* -Include *d.lib -Name | foreach { $_ -replace "d.lib", ".lib" } | clip
プロジェクトのプロパティ → リンカー → 追加の依存ファイルの入力欄を開いてCTRL+Vを実行もしくは以下をコピペします。
opencv_aruco430.lib opencv_bgsegm430.lib opencv_bioinspired430.lib opencv_calib3d430.lib opencv_ccalib430.lib opencv_core430.lib opencv_cudaarithm430.lib opencv_cudabgsegm430.lib opencv_cudacodec430.lib opencv_cudafeatures2d430.lib opencv_cudafilters430.lib opencv_cudaimgproc430.lib opencv_cudalegacy430.lib opencv_cudaobjdetect430.lib opencv_cudaoptflow430.lib opencv_cudastereo430.lib opencv_cudawarping430.lib opencv_cudev430.lib opencv_cvv430.lib opencv_datasets430.lib opencv_dnn430.lib opencv_dnn_objdetect430.lib opencv_dnn_superres430.lib opencv_dpm430.lib opencv_face430.lib opencv_features2d430.lib opencv_flann430.lib opencv_fuzzy430.lib opencv_gapi430.lib opencv_hdf430.lib opencv_hfs430.lib opencv_highgui430.lib opencv_imgcodecs430.lib opencv_imgproc430.lib opencv_img_hash430.lib opencv_intensity_transform430.lib opencv_line_descriptor430.lib opencv_ml430.lib opencv_objdetect430.lib opencv_optflow430.lib opencv_phase_unwrapping430.lib opencv_photo430.lib opencv_plot430.lib opencv_quality430.lib opencv_rapid430.lib opencv_reg430.lib opencv_rgbd430.lib opencv_saliency430.lib opencv_shape430.lib opencv_stereo430.lib opencv_stitching430.lib opencv_structured_light430.lib opencv_superres430.lib opencv_surface_matching430.lib opencv_text430.lib opencv_tracking430.lib opencv_video430.lib opencv_videoio430.lib opencv_videostab430.lib opencv_xfeatures2d430.lib opencv_ximgproc430.lib opencv_xobjdetect430.lib opencv_xphoto430.lib
Debug構成ではopencv_core430d.lib
とopencv_highgui430d.lib
Release構成ではopencv_core430.lib
とopencv_highgui430.lib
のみできちんとOpenCVが動く場合があるようですが私の環境ではすべてのlibファイルを指定しないと動きませんでした。
以下のコードがきちんと動くか確認します。
#include <opencv2/opencv.hpp> #include <iostream> int main() { cv::Mat img; img = cv::imread("C:/P2232351.JPG"); #適当な写真ファイルに書き換えてください。 cv::imshow("title", img); cv::waitKey(0); return 0; }
Pythonで使う
Pythonで使う場合はpy_opencvの仮想環境を立ち上げてimport cv2
を実行するだけで読み込んでくれます。
以下のコードがきちんと動くか確認します。
import cv2 img=cv2.imread("C:/P2232351.JPG"); #適当な写真ファイルに書き換えてください。 cv2.imshow('image',img) cv2.waitKey(0) cv2.destroyAllWindows()
pip install opencv-contrib-python
をPowerShellかCommand Promptから実行すれば使えるようになります。
pip install opencv-python
OpenCV単体ならこちらです。