VS2017でOpenCVをビルドする

What

Visual Studio 2017でOpenCVをビルドしたい。

Environment

How

Download Sources

$ git clone https://github.com/opencv/opencv.git

または

OpenCV library

CMake

CMake

CMake-GUIを起動、上部のテキストフィールドにソースのパスと出力先パスを入力する。ソースはgit cloneしてきたならopencvフォルダ、CMakeLists.txtのあるところ。出力先は適当にbuildとか。

Configureを押してVisual Studio 15 2017 Win64を選択、"Finish"。設定が始まる。

終わったら"Generate"。出力先にOpenCV.slnが生成される。

17/11/05追記:"Generate"の前にBUILD_*の設定を変えると出力されるlibが変わる。

Visual Studio

OpenCV.slnを開いて、構成をReleaseに変えてCMakeTargets/INSTALLをビルド。

17/11/05追記_dのつくデバッグ用ライブラリを生成したいならDebug構成でビルドすればよい。

正常に終われば、出力先のinstall\x64\vc15\libopencv_core330.libなどが出力されている。

VS2017でOpenCVを使う(Win pack) - kanomiyaのブログ

install\x64\vc15\binにPATHを通し、上のページに従ってVSプロジェクトを設定(ライブラリは適宜必要なもの)する。

Reference

VS2017でOpenCVを使う(Win pack)

What

Visual Studio 2017でOpenCVを使いたい。

Environment

How

OpenCVのダウンロード

OpenCV library

OpenCV libraryのReleasesから最新の"Win pack"をダウンロード。

"Win pack"は自己展開exeになっているので、適当なディレクトリを指定して展開。

VSプロジェクトの設定

新規にプロジェクトを作る場合、Visual C++から空のプロジェクトを作成。

ソリューションエクスプローラからプロジェクトのプロパティを開き、"VC++ディレクトリ"のツリーに移る。

"インクルードディレクトリ"、"ライブラリディレクトリ"を編集し、展開ディレクトリ以下のbuild\includeをそれぞれに追加する。

"リンカー"のツリーに移り、"追加のライブラリディレクトリ"を編集し、展開ディレクトリ以下のbuild\x64\vc14\libを追加する。

"リンカー"のツリーから、"入力"を選択し、"追加の依存ファイル"に必要なライブラリ(.lib)を追加する。Win packにはopencv_world330d.libデバッグ)とopencv_world330.lib(リリース)しかないので、構成に対応する方を追加。

PATHの設定

展開ディレクトリ以下のbuild\x64\vc14\binにPATHを通す。

サンプル

水色のウインドウが表示されればOK。ウインドウをアクティブにして何かキーを押せば終了する。

MSYS2でPython3を使う

What

MSYS2でPython3を使いたい。

Environment

Windows 10 Home

How

$ pacman -S pythonで最新のPythonが入る。 $ pacman -S python3-pipでPython3のpipが入る。

例えばPython 3.6.2を入れたとして、実行するにはpythonpython3python3.6

Appendix

バージョン合わせ

export PATH="/mingw64/bin:${PATH}"

上のように.bash_profileをいじってMinGWのbinをPATHに入れて動かしてると、pythonバージョンが合わないときがある。

pythonで最新のPythonを動かしたいときは、

export PATH="${PATH}:/mingw64/bin"

とすれば動く。

エクスプローラからMSYS2を開く + メニュー項目の追加

What

MSYS2をエクスプローラから開きたい

Environment

Windows 10 Home

How

u_msys2.reg

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\u_msys2]
@="MSYS2 Here"

[HKEY_CLASSES_ROOT\Directory\Background\shell\u_msys2\command]
@="C:\\msys64\\msys2.exe"

上のようにレジストリキーを追加する。

#CHERE_INVOKING=1
#MSYS2_PATH_TYPE=inherit

msys2.iniで上のコメントアウトを外し、起動時にパスがエクスプローラ側のフォルダになるようにする(どこから持ってきてるんだ? 作業フォルダ?)。

Appendix

エクスプローラの右クリックメニューに任意の項目を追加する

以下のレジストリキーに特定のサブキーを追加する。

対象 キー名
フォルダの背景 HKEY_CLASSES_ROOT\Directory\Background\shell
フォルダ HKEY_CLASSES_ROOT\Folder\shell
任意のファイル HKEY_CLASSES_ROOT\*\shell
ファイル*.hoge HKEY_CLASSES_ROOT\.hoge\shell

追加するサブキーはhogehoge\commandの2つ。hogeには自由な名前を付けられるっぽい。

hogeには、既定値にメニューの名称を設定。

hoge\commandには、既定値にアプリケーションパスを設定。これは、PATHを通していても無効かもしれない。%Vは"メニューを開いた"、つまり選択したパスで置換される。

Sample

以下はフォルダの右クリックメニューに"cmd.exe /k dir"を実行する項目"TEST"を追加するサンプル。

u_dir.reg

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Folder\shell\u_dir]
@="TEST"

[HKEY_CLASSES_ROOT\Folder\shell\u_dir\command]
@="cmd.exe /k dir"

こちらは同キーを削除する。 !u_dir.reg

Windows Registry Editor Version 5.00

[-HKEY_CLASSES_ROOT\Folder\shell\u_dir]

Reference