CLionでOpenCVを使えるようにした話
タイトルの通り, OpenCVをCLionで使えるように設定した.
CLionというのはJetBrains社が作っているC/C++のIDE. IntelliJ IDEAやPyCharm, Ruby Mineと同じ会社である.
設定環境
- Windows7 Professional
- OpenCV 3.2.0
- MinGW(https://mingw-w64.org/doku.php/start)
- CMake 3.8.0-rc4
- CLion 2017.1
OpenCVのビルド
まずはじめにOpenCVのビルドを行う.
OpenCVのダウンロード
OpenCVをダウンロードしてくる.
任意の場所に展開し, CMakeでビルドする.
CMakeを使ってビルド
"Where is the source code"には先程展開したディレクトリの中のsourceディレクトリを, "Where to build the binaries"には出力先ディレクトリを書く. 今回はmingwとした.
選択が終わったあとはConfigureを押す.
ここではMinGW Makefilesを選択する.
下記のように真っ赤な画面がでてくるので, Configureを押して白くなるのを待つ.
正常に終わると以下のようになる.
そしてGenerateを押してビルドを行う.
makeを使ってビルド
コマンドプロンプトを開いてCMakeでビルドした先へ移動する.
$ mingw32-make
これが終わったら
$ mingw32-make install
とすることで完了する. このときにエラーがでてmingw23-makeが終わらず大変苦しむ. エラーで検索したら以下のstackoverflowを発見(これに頼るのはいけない気もするが…) stackoverflow.com こいつのとおりに直して無事にインストール完了した.
CLionの設定
CMakeList.txtに以下の内容を追記する.
find_package( OpenCV REQUIRED ) include_directories( ${OpenCV_INCLUDE_DIRS} ) target_link_libraries( "プロジェクト名" ${OpenCV_LIBS} )
そしてプロジェクトセッティング(今回のプロジェクト名はopencv_testとした)を開き, Executableをプロジェクト名にしてOKし実行.
今回使ったソースコードはおなじみ"lena"を表示するプログラム.
#include <opencv2/opencv.hpp> int main() { cv::Mat image; image = cv::imread("lena.png", 1); if(!image.data){ printf("No image data\n"); return -1; } cvNamedWindow("Display Image", CV_WINDOW_AUTOSIZE); cv::imshow("Display Image", image); cvWaitKey(0); return 0; }
以下のように画像が出力されたら成功.
参考
追記(2017/11/07)
先日ビルドしたらこのようなエラーが出た.
$ .... windres.exe: invalid option -- W
CmakeでGenerateするときに, ENABLE_PRECOMPILED_HEADERSのチェックを外すとうまくいくらしい.