VisualStudio2017CommunityでOpenCV開発環境の構築

Visual Studio 2017 CommunityにてC++で動くOpenCV開発環境を構築したので、残しておきます。

#必要なもの
バージョンは投稿時最新のもの
OSはWindows10です。
・Visual Studio 2017 Community　(http://www.visualstudio.com/ja/vs/community/)
・OpenCV 3.3.0　(http://opencv.org/releases.html)
・Cmake 3.9.4　(http://cmake.org/download/)
・OpenCV contrib 3.3.0　(http://github.com/opencv/opencv_contrib/releases)

#手順
##0.事前準備
###Visual Studio 2017 Communityのインストール
上のリンクから次のような画面に飛びます。
![alt](https://qiita-image-store.s3.amazonaws.com/0/207074/372afcea-55ff-906c-bcc0-02daf1b389d5.png)

「VS Community 2017　のダウンロード」と書かれているボタンを押すとDLが始まりますので、完了したらインストーラーを起動してください。

![vs2017c02.png](https://qiita-image-store.s3.amazonaws.com/0/207074/52862f86-4661-3866-2953-49348a1b4e7d.png)

このような画面まできたら、目的ごとに必要な機能をインストールできる「ワークロードベース」インストール機能が実装されているので、自分の目的にあった機能の箇所にチェックを入れましょう。
今回はC++によるデスクトップ開発にチェックをいれました。
次に、「ワークロード」のタブの右隣にある「個別のコンポーネント」というタブを押します。

![vs2017c03.png](https://qiita-image-store.s3.amazonaws.com/0/207074/9cf0aed0-cc75-d017-6378-4cb875ae7ee4.png)


CMakeを使うので、「CMake の Visual C++ ツール」にチェックを入れます。これを忘れると後々CMake側でエラーが起きますので忘れずに。
最後に「インストール」ボタンを押してインストールを開始します。


###OpenCVのインストール
![alt](https://qiita-image-store.s3.amazonaws.com/0/207074/87e00983-7191-b50b-cff4-72f482f73233.png)

上のOpenCV公式ページのリンクから、バージョン3.3.0の「Win pack」をクリックしソースをDLします。
ダウンロードしたexeを実行して、zipファイルを解凍します。


###CMakeのインストール
![alt](https://qiita-image-store.s3.amazonaws.com/0/207074/80de9d27-4d93-ddc3-0240-f16018e4dc8c.png)

ソースからコンパイルして導入する場合、CMakeが必要になるので、上のCMake公式ページのリンクから、Latest Release(3.9.4)にある「cmake-3.9.4-winXX-x64.msi」をクリックします。XXは使っているOSのビット数に読み替えてください。自分の場合は画像の赤丸で囲んだものをインストールしました。
インストールが完了したら実行し、指示に従って進めていけばOKです。
途中で、「By default CMake does not add its directory to the system PATH.」の説明がでるので、その際には環境変数にパスを追加する必要があるので、「Add CMake to the system PATH for all users.」の項目にチェックを入れてください。

###OpenCV contribのインストール
![opencv_contrib01.png](https://qiita-image-store.s3.amazonaws.com/0/207074/712d29b6-2e2b-cab7-0e09-9c9570074707.png)

上のgithubのリンクから、OpenCVのバージョンと同じものをDLします。(今回は3.3.0)
これも解凍をして、先程解凍したopencvのフォルダ直下においてください。

##1.CMake
Visual Studio 2017でビルドする為のファイルをCMakeで作成します。

![cmake02.png](https://qiita-image-store.s3.amazonaws.com/0/207074/aaf0d91f-8440-846a-de7c-4d532770997b.png)

まず、C:\Program Files\CMake\bin　の場所にあるファイル[cmake-gui]を管理者権限で起動します。

![cmake03.png](https://qiita-image-store.s3.amazonaws.com/0/207074/e207ff8a-c064-d5e7-75ba-12008dc2b057.png)



そして、「Where is the source code」と「Where to build the binaries」のフォルダを指定します。「Where is the source code」はopencv-3.3.0を解凍したフォルダ直下の[source]フォルダを、[Where to build the binaries]はopencv-3.3.0を解凍したフォルダ直下の[build]フォルダを指定します。

指定したら、「Configure」のボタンを押します。すると次のような画面が出てきます。

![cmake04.png](https://qiita-image-store.s3.amazonaws.com/0/207074/ba3e85ad-6897-73fe-1578-8509846cf0ec.png)

コンパイラの設定ですが、64bitアプリケーション用としてインストールするので「Visual Studio 15 2017 Win64」を選択し「Finish」をクリックします。32bitアプリケーション用としてインストールしたい場合は、[Visual Studio 15 2017]を選択してください。

![cmake05.png](https://qiita-image-store.s3.amazonaws.com/0/207074/3ac965df-b7ab-a219-9f2c-92f0623028a1.png)

表示される結果の最後にConfiguring doneと表示されていれば大丈夫です。

たくさん表示されているチェックボックスでオプションの選択をします。

![cmake06.png](https://qiita-image-store.s3.amazonaws.com/0/207074/a893db58-dc21-b8f1-63e3-ef265b3bee0f.png)

「Search」のテキストボックスにEXTRAと入力し、「OPENCV_EXTRA_MODULES_PATH」のオプションを抽出し、「Value」の部分にopencv_contrib-3.3.0フォルダにある[modules]の絶対パスを当てます。
そして、もう一度「Configure」のボタンを押します。
※opencv_worldというすべてのライブラリファイルを一気にリンクできるファイルは、初期状態では生成される設定になっていません。必要な場合は、BUILD_opencv_worldにチェックを入れてください。

再度、Configuring doneが表示されたら、Generateをクリックします。すると、Generating doneと表示された後、buildフォルダの中にたくさんのビルドするためのファイルが生成されています。

##2.Visual Studio 2017 Community
次にVisual Studio 2017 Communityでビルドします。
opencvフォルダのbuildフォルダ直下にある「OpenCV.sln」をVisual Studio2017で開きます。そして、CMakeTargetsの中のINSTALLをスタートアッププロジェクトに設定して、DebugとReleaseについてそれぞれビルドを行えばOKです。

![vs2017c04.png](https://qiita-image-store.s3.amazonaws.com/0/207074/db43dd78-14e5-7d19-b627-7a1736c2cd5e.png)

![vs2017c05.png](https://qiita-image-store.s3.amazonaws.com/0/207074/1653ba1d-284b-5108-1fa8-7eb4e0cdf215.png)

![vs2017c06.png](https://qiita-image-store.s3.amazonaws.com/0/207074/e3949cfb-3461-37a4-5762-34c9878254fc.png)


##3.プロジェクト作成
今までの行程が完了したら、実際にプロジェクトを作成することができますので、適当なプロジェクトを作成してみましょう。

![vs2017c09.png](https://qiita-image-store.s3.amazonaws.com/0/207074/6e92b046-0470-9f6a-40b8-90842d5af508.png)

作成したら、「デバック」タブを開き、一番下にある「(作成したプロジェクト名)のプロパティ」をクリックし、設定していきます。

![vs2017c07.png](https://qiita-image-store.s3.amazonaws.com/0/207074/a565cc39-81bc-cde5-76bc-6897b6efa536.png)

プロジェクトのプロパティページが出てくるので、構成プロパティ ↳ C/C++ ↳ 全般　の「追加のインクルードディレクトリ」の部分にopenCVフォルダのbuilt\install\includeの絶対パスを入力してください。

![vs2017c08.png](https://qiita-image-store.s3.amazonaws.com/0/207074/4bf75690-4bbc-91f7-9301-a76bf5d70567.png)

次に、構成プロパティ ↳ リンカー ↳ 全般　の「追加のライブラリディレクトリ」の部分にopenCVフォルダのbuilt\install\x64\vc15\libの絶対パスを入力してください。

これで、プロジェクトの設定が完了します。この設定はプログラム側に記述しても大丈夫です。