Visual Studio 2017(Windows10)でOpenCV3.4.1を利用できるようになるまで


## 目標
Visual Studio 2017(Windows10)で記事執筆時点の最新版OpenCV3.4.1をC++で利用できるようにすること

## まえがき
いくつかのサイトを参考にして，OpenCVをインストールしてみたけど，なぜかできないことが多くあって半ばキレながら思索したことのメモです．
無料で使えるC++に対応したIDEのVisual Studio 2017 Communityを利用します．
（WindowsでC++が使えてOpenCVを組み込めるIDEはVisual Studioくらいしかない？）

## How to
### Visual Studio 2017のインストール
Visual Studio 2017からVisualStudioInstallerを経由してインストールしないといけないみたいなので，逆らわずに正直に以下のリンクからダウンロードする．
（といっても，選択できるのはCommunity 2017でそのままインストールが始まるかと思えば，先にInstallerがインストールされる仕組み）
[Visual Studio 2017 Communityのダウンロード](https://www.visualstudio.com/ja/downloads/)

ダウンロードできればインストーラを起動して，しばらく待つと以下のようなセットアップ画面が出てくると思うので，「C++によるデスクトップ開発」のチェックボックスをクリックする．
（この画面は，すでにインストールされているので変更していますになっています）![1.png](https://qiita-image-store.s3.amazonaws.com/0/91816/a5853851-41a6-775b-db89-d37d11f131d0.png "Visual Studio Installer.png")

おそらく何もいじらなくてもいいはずです．

## OpenCV3.4.1のダウンロード・インストール
OpenCV3.4.1では，これまで必要だった？コンパイルが必要なくなり，パッケージにWindows向けにビルドされたフォルダが生成されているので今回はそれを利用します．
GitHubからダウンロードしましょう．
[OpenCV3.4.1のダウンロード](https://github.com/opencv/opencv/releases)
の「opencv-3.4.1-vc14_vc15.exe」をダウンロードして，任意の場所に解凍（インストール）してください．
以下の説明では **C:¥opencv** に解凍したものとします．パスはインストール先の環境に合わせて適宜読み替えてください．
### 環境変数の設定
**C:¥opencv¥build¥x64¥vc15¥bin** を環境変数のPATHに追加してください．


## Visual Stusio 2017の設定
ビルドする前提として，

|アクティブソリューション構成|アクティブソリューション プラットフォーム|
|:-----:|:-----:|
|Debug|x64|

とします．
このアクティブソリューション構成とアクティブソリューション プラットフォームって何かと思うかもしれませんが，
![2.png](https://qiita-image-store.s3.amazonaws.com/0/91816/f00a4df0-9853-834f-b662-7ef95be854f8.png "ActiveSolution.png")
のビルド(B)の下にある選択ボックスにある値のことです．


Visual StudioのReleaseおよびx64と指定したときの設定を行うために，プロジェクトを新規に作成します．プロジェクト名は適当でいいです．

作成しmain.cppのファイルが表示されている状態になったら，メニューバーの「表示」→「その他のウインドウ」→「プロパティ マネージャー」を選択します．
![3.png](https://qiita-image-store.s3.amazonaws.com/0/91816/67519766-00ae-9a85-bd0d-13beeb24920c.png "property manager.png")

以下のようなウインドウが表示されるので，
![4.png](https://qiita-image-store.s3.amazonaws.com/0/91816/4c2b86e4-e429-9131-2e30-bf5153616e4e.png "window.png")
「Debug|x64」の「Microsoft.Cpp.x64.user」をダブルクリックしてプロパティページを表示させます．
![5.png](https://qiita-image-store.s3.amazonaws.com/0/91816/f9704fa1-9fe4-e37e-7738-7ecb4c6ed302.png "property page.png")

そして，以下の設定を行います．

**「共通プロパティ」→「VC++ディレクトリ」**

|変数|値|
|:----:|:----:|
|インクルード ディレクトリ|C:¥opencv¥build¥include|
|ライブラリ ディレクトリ|C:¥opencv¥build¥x64¥vc15¥lib|

**「共通プロパティ」→「C/C++」→「全般」**

|変数|値|
|:----:|:----:|
|追加のインクルード ディレクトリ|C:¥opencv¥build¥include|

**「共通プロパティ」→「リンカー」→「全般」**

|変数|値|
|:----:|:----:|
|追加のライブラリ ディレクトリ|C:¥opencv¥build¥x64¥vc15¥lib|

**「共通プロパティ」→「リンカー」→「入力」**

|変数|値|
|:----:|:----:|
|追加の依存ファイル|opencv_world341d.lib|

以上の設定ができれば，Visual Studioを終了（終了時に「ユーザープロパティシートの変更を保存しますか。」と表示されたら「はい」を選択）して，もう一度起動させます．


## サンプルプログラム
プロジェクト名.cppに以下を追記する．

```c++:プロジェクト名.cpp
#include <iostream>
#include <opencv2/opencv.hpp>

using namespace cv;

int main(int argc, char *argv[])
{
    Mat im(Size(300, 300), CV_8UC3, Scalar(0, 255, 255));
    imshow("Show", im);
    
    waitKey(0);
    
    return 0;
}
```

「ローカル Windows デバッカー」をクリックして黄色のウィンドウが表示されればOK！
おつかれさまでした！

## 最後に
なかなかVisual Studio 2017でOpenCVが使えるようになるまで時間がかかりました．
特に，最後の **「共通プロパティ」→「リンカー」→「入力」** の **追加の依存ファイル** 設定でハマっていました．