Visual Studio Community 2017 に　OpenCV 3.4.1　を入れた話

#概要
こちらの記事のとおりに設定する。

OpenCV 3.4.1をVisual Studio 2017から使用する時の手順
https://qiita.com/h-adachi/items/aad3401b8900438b2acd

動いたッ！第３部完！

と言いたいところなのですが自分は動きませんでした。

しかしこれは決して上記の記事が間違っているわけではなく、自分がVisual Studioに詳しくないために要所要所で設定の仕方をミスっていた、あるいは設定をしていなかったことが原因でした。

というわけで備忘録の意味もこめて自分の行った手順を記していきたいと思います。
くどい書き方になる部分もありますがご容赦いただければと思います。
#環境
- Windows 7(64 bit)
- OpenCV 3.4.1
- Visual Studio Community 2017

自分の持っている環境がこれだけなのでWindows 10などの動作は良くわからないです。

#対象
- 上記の記事で導入が出来なかった方
- 「Visual Studioはじめました」な方

#おおまかな流れ
以下の順序で行っていきます。

- OpenCVのインストール
- Pathの設定
- Visual Studioの設定
- サンプルプログラム実行

##OpenCVのインストール
ここは[こちらの記事](https://qiita.com/h-adachi/items/aad3401b8900438b2acd "OpenCV 3.4.1をVisual Studio 2017から使用する時の手順")のまま行っていきます。
以下のページに飛んで「opencv-3.4.1-vc14_vc15.exe」をダウンロードします。
![OpenCVダウンロード.PNG](https://qiita-image-store.s3.amazonaws.com/0/241893/25a38737-e669-b067-37aa-98db827a6f77.png)
ダウンロードをしたら次に実行します。ダウンロードしたファイルをダブルクリックします。
すると次のような画面が出ます。
![opencvインストール.PNG](https://qiita-image-store.s3.amazonaws.com/0/241893/89a592ed-d914-09f6-55e8-20e81cf585e3.png)
これはどこにファイルを展開するか聞いています。
無難にC:に展開するといいと思います。
「C:」と打ち込んで「Extract」を押せばOKです。
ここまで行うとCドライブに「opencv」というフォルダが出来て、その下に「build」、「sources」の二つのフォルダが出来ていることが確認できます。以降はこのフォルダ構成を前提に記述していきます。
##Pathの設定
実はこの項目は[先の記事](https://qiita.com/h-adachi/items/aad3401b8900438b2acd "OpenCV 3.4.1をVisual Studio 2017から使用する時の手順")では言及のみで行われていませんでしたが、のちの設定が減る気がするので行いました。
スタートメニューを開き、コンピューターの上で右クリックをすると一番下に「プロパティ」があるのでそれをクリックします。
![path設定.png](https://qiita-image-store.s3.amazonaws.com/0/241893/4baee843-8000-acd0-a316-ce8de59abf4c.png)
そうしますとパソコンのいろんな情報が提示されます。その左に「システムの詳細設定」の項目があるのでクリックします。
そして出てきたダイアログの下のほうに「環境変数」があるのでこれもクリックします。
![path画面.png](https://qiita-image-store.s3.amazonaws.com/0/241893/5c01b27b-818d-add6-871f-d97e78ced332.png)
ここで出てきたダイアログには「ユーザーの環境変数」と「システム環境変数」の二つの窓があります。
本来的にはユーザーの環境変数をいじるほうが良いようですが、ここではシステム環境変数を変更しました。

この窓を下に動かしていくと「Path」の項目がありますので、図のようにクリックをして選択した状態にして「編集」を押します。
そうしますと以下のようなダイアログが現れますので、この文字列の最後尾に「;C:\opencv\build\x64\vc15\bin」を**追記**します。書き換えてはなりません。うっかり消したりしたらあわてずキャンセルを押してもう一度やり直しましょう。
![path文字列.PNG](https://qiita-image-store.s3.amazonaws.com/0/241893/ebbdf01a-e6f7-87c5-59d1-74e76db5974d.png)
終わりましたら全部のダイアログの「OK」ボタンを押して全部閉じます。
これでOpenCV側の設定は終了になります。

なおこの段階でVisual Studioが起動している場合は環境変数が反映されないので、Visual Studioを再起動しましょう。
##Visual Studioの設定
いよいよVisual Studioを起動させます。
「ファイル」⇒「新規作成」⇒「プロジェクト」を押して新しいプロジェクトを作成します。
そうしましたら左のほうにある「Visual C++」を選択し、中央に出てきた「Windowsコンソールアプリケーション」を選択します。あとは好きな名前を入れてプロジェクトを作成します。ここでは「hello_opencv」にしています。
なおここではDebugモードでの実行について書いていきます。

まずツールバーの「デバッグ」の下ら辺にある「x86」を「x64」に変更します。（ソリューションプラットフォームの変更）
![ソリューションプラットフォーム.PNG](https://qiita-image-store.s3.amazonaws.com/0/241893/c8fdf9c5-73e7-a46e-48b0-2849d2541acf.png)

その次にツールバーの「デバッグ」⇒「hello_opencvのプロパティ」をクリック。
左の「構成プロパティ」の下に三つ目の「VC++ディレクトリ」をクリックします。
ここで「インクルードディレクトリ」の項目を選択して、内容に「C:\opencv\build\include;」を書き足します。
同様に「ライブラリディレクトリ」の内容に「;C:\opencv\build\x64\vc15\lib」を書き足します。
![ディレクトリ選択.PNG](https://qiita-image-store.s3.amazonaws.com/0/241893/967660ba-b7e5-e3a8-a956-bd46c1455e53.png)
ちなみにここは図のように書き足すのではなく書き換えても動きます。
が、自分の環境では大量のエラーが出て（でも動く）、あまり気分が良くないので書き足しました。

その次に「C/C++」の項目を開き、「プリコンパイル済みのヘッダー」を選択します。
出てくる項目一番上の「プリコンパイル済みのヘッダー」を「使用する」から「プリコンパイル済みのヘッダーを使用しない」に変更します。これをしないとstdafx.hが無いぞと怒られてしまいます。
![プリコンパイル済みヘッダー.PNG](https://qiita-image-store.s3.amazonaws.com/0/241893/4bed1151-92c3-2a81-d8cf-509477727fbd.png)

最後に「リンカー」項目を開き、その中の「入力」を選択。
出てくる項目一番上の「追加の依存ファイル」に「;opencv_world341d.lib」を書き足します。
![追加の依存ファイル.PNG](https://qiita-image-store.s3.amazonaws.com/0/241893/b343a3cc-be03-545c-76d6-16efc2e1095a.png)

ここも今まで同様書き換えても動くようですが、全て書き換えた際にkernel32が無いよとエラーが出て実行できなかったので、書き足すのが無難と思われます。
以上でVisual Studioの設定は終わりになります。

なお、[こちらの記事](https://qiita.com/h-adachi/items/aad3401b8900438b2acd "OpenCV 3.4.1をVisual Studio 2017から使用する時の手順")で設定されていた「環境」の部分は先ほどの環境変数の設定でカバーしていますのでする必要はありません。
##サンプルプログラム実行
「ファイル」⇒「新規作成」⇒「ファイル」で新しいファイルを作りまして、[こちらの記事](https://qiita.com/h-adachi/items/aad3401b8900438b2acd "OpenCV 3.4.1をVisual Studio 2017から使用する時の手順")のサンプルコードをコピペして「x64」の右にある緑の三角を押せば無事小さいウィンドウが出るはずです！
お疲れ様でした！