【VisualStudio2019とC++】環境変数の設定なしで簡単にOpenCVの開発環境を整える話。
こんにちは!べれすくです。
最近、人工知能やライブラリの便利さからPythonが人気ですね。
しかし、C++でしかつかえないライブラリがあったり、実行速度が速いという点でC++にもアドバンテージはあります!
そんなわけで、今回はVisualStudio2019を使ってC++のOpenCVの開発環境を整えようと思います。
Python に比べると導入が面倒ですがやっていきましょう!
↓ちなみにPythonでOpenCVの環境を整える話はこちら。
もくじ
VisualStudio2019を入れよう!
VisualStudio2019をインストールします!
多くの人はCommunityで大丈夫です。
ダウンロードしたら指示道理にインストールしていきます。
ワークロードは「C++によるデスクトップ開発」にチェックが入っていればあとはお好きなものをどうぞ!
後からでも変更できるので特に深く考える必要はありません。
インストールには結構な容量を必要とするため、時間がかかります。
気長に待ちましょう。
インストールが完了したら今は閉じておいて構いません。
OpenCVをダウンロードしよう!
OpenCVをダウンロードします。
こだわりがなければ最新版でいいと思います。
今回は最新が4.2.0だったのでそれを使います。
ダウンロードしたら実行しましょう。
展開する場所を指定します。
今回はD直下にしました。この場所はよく使うので覚えていてください。(メモ帳とかに貼っとくといいです)
プロジェクトを作ろう!
VisualStudioでプロジェクトを作りましょう。
VisualStudio2019を起動してください。
起動したら「新しいプロジェクトの作成」を選びます。
今回は空のプロジェクトを使います。
C++なら基本的に動くので、実際に使う際は用途に合わせて選んでください。
プロジェクト名とプロジェクトファイルを置くフォルダを好きなように設定します。
この場所も後で使うので覚えておいてください。
ライブラリディレクトリの指定をしよう!
これでプログラムを始められる状態になったわけですが、このままではOpenCVは使えません!
VisualStudioにOpenCVのファイルがどこにあるかを教えてあげないといけないからです。
上部のプロジェクトタブからプロパティを開きます。
構成を「すべての構成」に、プラットフォームを「すべてのプラットフォーム」に変えます。
インクルードディレクトリ
VC++ディレクトリタブを選択し、インクルードディレクトリを編集します。
編集は欄をクリックすると出る、右端の下矢印を押すと出てきます。
右上の黄色いファイルマークを押し、OpenCVの中にあるインクルードディレクトリを以下のような形で指定します。
「OpenCVの場所」\opencv\build\include
「OpenCVの場所」は先ほどOpenCVを展開したときに覚えておいてくださいと言ったものです。
私の場合はD直下なので写真のようになります。
ライブラリディレクトリ
続いて、ライブラリディレクトリも指定します。
「OpenCVの場所」\opencv\build\x64\「vcなんとか」\lib
「OpenCVの場所」に関してはインクルードディレクトリと同じです。
「vcなんとか」はバージョンによって異なります。(4.2.0ではvc14かvc15です。違いは分かりませんが、どっちでも動きます。)
わからない場合は実際にそのディレクトリに行ってファイルを見てみるのがいいでしょう。
追加の仕方はインクルードディレクトリと同じです。
私の環境ではこんな感じです。
追加の依存ファイル
依存ファイルの指定をします。
リンカータブを開き、入力タブに進みます。
その中にある追加の依存ファイルを編集します。
以下の2文を追加します。
opencv_world「OpenCVのバージョン」d.lib opencv_world「OpenCVのバージョン」.lib
「OpenCVのバージョン」はダウンロードしたOpenCVのバージョンです。
今回は4.2.0なので、
opencv_world420d.lib opencv_world420.lib
のようになります。
DLLファイルを配置しよう!
本来であればここでwindows側の環境変数をいじるのですが、管理者権限が必要+環境を別PCに移すと動かなくなるという問題があるので、別の手法をとります。
こちらのほうが簡単ですしね。
まずは下準備です。
Debug、Releaseフォルダの生成
現状、空のプロジェクトを立ち上げただけなので、プログラムを書くファイルすらありません。
まずはそれを作りましょう。
右側にあるフォルダ一覧から「ソースファイル」を右クリックして「追加」→「新しい項目」に進みます。
「C++ファイル」を選んで追加を押します。(ファイル名は好きに変えてもらって構いません。)
VisualStudio内のコードエディタが起動し、文字を打てるようになります。
ここにコードを打っていくのですが、今は何も打たずに上の欄が「Debug」「x64」になっていることを確認して、再生マークを押してください。なっていなければ変えてください。
エラーが出ると思います。それで正常です。だって、何も書いてないんですもの。
「最後に成功したビルドを実行しますか」という問いには「いいえ」と答え終了します。
一見無駄な行為に見えますが、これでプロジェクトファイルの中に必要なフォルダが生成されています。
DLLファイルの移動
エクスプローラを開き、プロジェクトフォルダへ移動します。
「プロジェクトフォルダの場所」\x64\Debug
ちなみに、この「x64」フォルダは一度は実行しないと出現しません。
私の環境だと
D:\document\visualstudioproject\OpenCV\x64\Debug
になります。
もう一つエクスプローラを開き、今度はOpenCVを展開したフォルダを開きます。
「OpenCVの場所」\opencv\build
その中にある、「opencv_world420d.dll」と「opencv_world420.dll」を先ほど開いたプロジェクトフォルダの中にコピーします。
↓プロジェクトフォルダ
こうなればOKです。
サンプルプログラムを起動しよう!
こちらからサンプルプログラムを借ります。
一番シンプルです。
#include <opencv2/opencv.hpp> using namespace cv; int main() { Mat image = Mat::zeros(100, 100, CV_8UC3); imshow("", image); waitKey(0); }
これだけです。
これを先ほどのVisualStudio2019にコピペして実行しましょう。
左上に小さいウィンドウが出れば完成です。
まとめ
今回はVisualStudio2019でOpenCVを環境変数の設定なしに利用する方法をお話ししました。質問やご指摘があれば下のコメントからお願いします。できる限り回答、改善をさせていただきます。
ライブラリディレクトリの指定やDLLファイルの設置はプロジェクトを作るたびに行わなければなりません。
Pythonに比べれば面倒くさい作業ですが、画像や動画という容量の大きいメディアを扱う上で速度面の欲はいずれ出てくると思います。
そういう時にこの記事を思い出して、C++でやってみようと思ってもらえれば幸いです。
次回はPythonでOpenCVの環境を整える話をしたいと思います。
↓つぎ
今回はここまでにしましょう。それでは!