CygwinでOpenCVを入れる


C++で画像処理をするためにOpenCVを入れることにしました.
普段からCygwinを使用しているため,CygwinでOpenCVを入れようと思い色々なサイトで調べてみたのですが,Cygwinパッケージでインストールする方法がほとんど書かれていなかったので,備忘録もかねて書き残そうと思いました.

動作環境

Windows環境でOpenCV 3.4.1をインストールします.
(現在,OpenCV 4.4がありますが,Cygwinではサポートしていないようです)

Cygwinのインストール

CygwinはWindowsにUNIXライクな環境を構築できるものらしいです.自分はもともとC,C++を使うためのgccやg++を使うためだけに入れていました.最近はmakeとかも重宝してます.

cygwinそのもののインストール,またgcc,g++パッケージのインストールについては他のサイトで多く解説されているのでそちらを参考にしていただけたらと思います.

OpenCVパッケージのインストール

libopencv3.4というパッケージを選択し,インストールするバージョンを選択します("Skip"の場合はインストールされません).

動作確認

パッケージを入れたら動作確認です.下のようなプログラムを実装し,コンパイルします.

opencv_test.cpp
#include <opencv2/opencv.hpp>

int main(int argc, char* argv[]) {
    // 画像データを入れるオブジェクト
    cv::Mat image(256, 256, CV_8UC3);

    // テキストを描画する
    cv::String text = "Hello, world";
    cv::Point org(0, 100);
    int fontFace     = cv::FONT_HERSHEY_SIMPLEX;
    double fontScale = 1.0;
    cv::Scalar color(0, 255, 127);        // Blue, Green, Red
    cv::putText(image, text, org, fontFace, fontScale, color);

    // 画像を出力する
    cv::String path = "hello-world.png";
    cv::imwrite(path, image);

    return 0;
}

コンパイルする際,ライブラリをリンクする必要があります.

g++ cv_test.cpp -lopencv_core -lopencv_imgproc -lopencv_imgcodecs

プログラムを実行し,以下のようなファイルが出力されたら成功です.

OpenCV関連のライブラリは上の3つ以外にもたくさんあります.どのコマンドがどのライブラリに対応しているかいちいち確認するのも面倒なので,下のようにまとめてしまうのが良いと思います(makefileやCMakeを使ったほうがもっと楽だと思います).

g++ cv_test.cpp -I/usr/local/include -L/usr/local/lib -lopencv_calib3d -lopencv_core -lopencv_features2d -lopencv_flann -lopencv_highgui -lopencv_imgcodecs -lopencv_imgproc -lopencv_ml -lopencv_objdetect -lopencv_photo -lopencv_stitching -lopencv_video -lopencv_videoio

まとめ

CygwinでOpenCV 3.4.1をインストールする方法についてまとめました.OpenCVのインストールは結構苦労する印象でしたが,Cygwinのパッケージを使えば簡単にインストールできるんですね.