結論
こちらの記事の方法でVisual Studio2017でOpenCVビルドするの楽勝やんけ!と思ったら全然できなかったので、こちらの記事の方法をちょちょっと変えて試したらできたという話。1日潰しました。なかなか有意義でしたね!
方法
プロジェクトの作成
もう先のサイト見てよ!といったらこの記事の意味がないのでちゃんと1から手順を書きます。
まずOpenCV3.3.0をダウンロードします。理由は私が悪戦苦闘していたバージョンだからです。他のバージョンを使う場合は適宜読み替えてくださいね。
ここから3.3.0のWin packを適当な場所にダウンロードして解凍してください。場所はどこでもいいです。使わないしそこがおそらく元凶なので。
次に、Visual Studio 2017を起動し、新しいプロジェクトを作成します。
デフォルトでWindows コンソール アプリケーションになっていれば、ここで設定するようなことは特にありません。したければすれば良いです。
次に、エクスプローラーを開いて、プロジェクトフォルダの一番上で(ルートフォルダっていうんでしょうか)Libraryフォルダを作ります。目印はプロジェクトファイルの*.slnファイルです。
プロジェクトフォルダがどこにあるのかわからないときはVisual Studio 2017に戻って適当なファイルをクリックして左下のプロパティをみるとプロジェクトパスとか完全パスとかいう項目が出てくるのでそれを参照なさってください。
次に、Libraryフォルダの中にopencvフォルダを作ります。
次に、opencvフォルダの中に冒頭で解凍したOpenCVのファイルのうちのbuildの中身のファイルをまるごと先のフォルダに移動してしまいます。6GBくらいあるのでびっくりしますね。
次からはVisual Studio 2017の作業です。ソリューションプラットフォーム(たぶんx86になってるやつ)をx64にします。
ソリューションエクスプローラーの自分が作ったプロジェクトを右クリックしてプロパティを表示します。
プラットフォームをx64にし、構成プロパティ→VC++ディレクトリにすると、この画面になるはずです。順番に処理していきましょう。
インクルードディレクトリに $(SolutionDir)Library\opencv\include
を設定してください。設定画面を使うほうがやりやすいですが、別段プロパティページで描いても問題はないです。(書き損じとかはあるかも)
ライブラリディレクトリも同様に、$(SolutionDir)Library\opencv\x64\vc14\lib
と記述してください。
左の項目のリンカー→入力で追加の依存ファイルに下記の項目をズラッと入力します。これは編集画面でやると苦行ですね。
zlibd.lib;IlmImfd.lib;ittnotifyd.lib;libjasperd.lib;libjpegd.lib;libpngd.lib;libprotobufd.lib;libtiffd.lib;libwebpd.lib;opencv_calib3d330d.lib;opencv_core330d.lib;opencv_dnn330d.lib;opencv_features2d330d.lib;opencv_flann330d.lib;opencv_highgui330d.lib;opencv_imgcodecs330d.lib;opencv_imgproc330d.lib;opencv_ml330d.lib;opencv_objdetect330d.lib;opencv_photo330d.lib;opencv_shape330d.lib;opencv_stitching330d.lib;opencv_superres330d.lib;opencv_ts330d.lib;opencv_video330d.lib;opencv_videoio330d.lib;opencv_videostab330d.lib;opencv_world330.lib;opencv_world330d.lib;
次はまたエクスプローラーでの作業に戻ります。
プロジェクトフォルダ直下に \x64\Debugといった構成でフォルダを作ってください。要するにx64の中にDebugを入れると言うわけです。
ここには実行ファイルやdllファイルが入るのでdllファイルを入れるわけです。プロジェクトフォルダの中のLibraryの中で *.dll
で検索するとdllを地引きできるのでそのようにするといいです。同じファイルがあるかもしれませんが、どのように処理しても差し支えないでしょう。
ライブラリも同じように *.lib
で検索して設定したライブラリフォルダに集めてしまいます(これ明らかに無駄だと思うけどやらないと動かない)。ファイルはLibrary\opencv\x64\vc14\libに置きます。
最初のh-adachiこちらの記事のさんのこのサンプルが動けばOK!お疲れ様でした!
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
Mat image = Mat::zeros(100, 100, CV_8UC3);
imshow("", image);
waitKey(0);
}