2018年10月27日土曜日

MinGWでOpenCVを使えるようにする

前回、MSYS2をインストールして、gcc関連のパッケージを導入しましたので、C++のプログラムがコンパイルできるはずです。で、以下のようなC++プログラムを「test01.cpp」というファイル名で用意したとします。
#include <iostream>
using namespace std;
int main(){
  cout << "Hello, World." << endl;
  return 0;
}
MinGW 64bitのshellを起動し、test01.cppを作ったディレクトリに移動します。
cd f:\OpecCV
で、以下のコマンドを入力します。
gcc test01.cpp -o test01 -lstdc++
そうしますと、「test01.exe」という実行ファイルができます。これを実行しますと、「Hello, World」が表示されます。

次に、OpenCVを導入します。OpenCVは、コンピュータ・ビジョンに関する機能を持つライブラリです。MSYS2ではOpenCVパッケージが用意されていて、以下のようにするとインストールできます。
pacman -S mingw-w64-x86_64-opencv
で、以下のようなC++プログラムを「test02.cpp」というファイル名で用意したとします。
#include <opencv2/core/core.hpp>
#include <opencv2/highgui.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
    Mat img = cv::imread("image.png");
    imshow("image", img);
    waitKey(0);
    return 0;
}
このプログラムをgccでコンパイルするのですが、設定が色々面倒ですので、以下のようなMakefileを作ります。
#Makefile
INC = -I "C:\msys64\mingw64\include\opencv4"
DIR =  -L "C:\msys64\mingw64\bin"
FLAGS = -lstdc++ -lopencv_core410 -lopencv_highgui410 -lopencv_imgcodecs410
OBJS = test02

main:
 gcc $(INC) $(DIR) test02.cpp -o $(OBJS) $(FLAGS)
で、以下のようにmakeすると、実行ファイルができます。
make
この実行ファイルを実行すれば、画像が表示されます。

2018年10月6日土曜日

MSYS2を通してMinGWを使う

Windows10でC++プログラミングをするとき、統合開発環境としてVisual Studioを使うのが一般的だと思います。ただ、Visual Studioをインストールすると、Windows10の設定を色々変えるので、不都合が生じるのが不安です(実際に生じたわけではありません)。代替措置としてgccを使うことを考えます。Windowsでgccを使えるようにする開発環境として、MinGW (Minimalist GNU for Windows)があります。今回は、これをWindows10にインストールします。

ただ、MinGWの最低限の機能だけをインストールするというわけにもいかないでしょう。gccのバージョンは一定期間ごとにupdateされますし、ライブラリだって利用したいでしょう。そうすると、色んなパッケージをインストールすることになるのですが、それらも管理していかないといけません。で、MSYS2 (Minimal SYStem 2)というのを使います。これは、Windows上で動作するプログラム開発環境を提供するシステムです。UnixやLinuxと同様にshell(bash)端末でコマンドを使って操作します。 ということで、これからやることは、

  • MSYS2をインストールする
  • MinGWをインストールする
  • です。

    まず、MSYS2のページにアクセスして、MSYS2のインストーラー「msys2-x86_64-20190524.exe」をダウンロードします。

    次に、ダウンロードした「msys2-x86_64-20190524.exe」を実行します。基本的にポップアップ画面の右下の「次へ」をクリックしていけば、「C:\msys64」にMSYS2がインストールされます。Windowsのメニューで「MSYS2 64bit」をクリックして、以下のようなshellが現れればインストール成功です。

    で、パッケージのデータベースを更新します。
    pacman -Sy
    そして、以下のコマンドでパッケージを更新します。
    pacman -Su
    ここで、以下のような警告メッセージが出たら、MSYS2を一旦閉じ、もう一度立ち上げ直して上記コマンドを再度実行します。
    警告: terminate MSYS2 without returning to shell and check for updates again
    警告: for example close your terminal window instead of calling exit
    
    警告メッセージが出なくなればOKです。

    次に、MinGW-w64(64bit)とその関連パッケージをインストールします。

    pacman -S base-devel
    pacman -S mingw-w64-x86_64-toolchain
    

    一旦、MSYS2のshellを閉じて、MinGW 64-bitのshelを起動します。そこで、以下のコマンドを実行して、下のような表示が出ればOKです。

    gcc --version