web-dev-qa-db-ja.com

Windows 7でOpenCV 2.4とMinGWを使い始める

OpenCV 2.4をインストールし、MinGWでコードをコンパイルするにはどうすればよいですか?

34
flowfree

1。 OpenCV 2.4.3のインストール

まず、sourceforge.netから OpenCV 2.4. を取得します。自己ファイル抽出なので、ファイルをダブルクリックしてインストールを開始します。 C:\などのディレクトリにインストールします。

OpenCV self-extracting

すべてのファイルが抽出されるまで待ちます。 OpenCVヘッダーファイル、ライブラリ、コードサンプルなどを含む新しいディレクトリC:\opencvを作成します。

次に、C:\opencv\build\x86\mingw\binディレクトリをシステムPATHに追加する必要があります。このディレクトリには、コードの実行に必要なOpenCV DLLが含まれています。

コントロールパネルシステムシステムの詳細設定詳細タブ環境変数...

次のようなウィンドウが表示されます。

Add OpenCV DLL directory to system path

[システム変数]セクションで、
selectPath(1)、クリックEdit ...(2)、C:\opencv\build\x86\mingw\bin(3)を追加し、Okをクリックします。

これで、コンピューターへのOpenCV 2.4.3のインストールが完了します。


2。 MinGWコンパイラスイートのインストール

コードのコンパイルにはgcc(GNU Compiler Collection)を使用することを強くお勧めします。 gccはLinuxシステムで広く利用可能なコンパイラスイートであり、MinGWはWindowsのネイティブポートです。

Sourceforge.netから MinGWインストーラー をダウンロードし、ダブルクリックしてインストールを開始します。ウィザードに従って、インストールするディレクトリを選択します。たとえば、C:\MinGW.

Select directory in MinGW installation

インストールする「Cコンパイラ」と「C++コンパイラ」を選択します。

Select components to be installed

インストーラーはインターネットからいくつかのパッケージをダウンロードするため、しばらく待つ必要があります。インストールが完了したら、前に説明した手順を使用して、システムパスにC:\MinGW\binを追加します。

Add MinGW bin directory to system path

MinGWのインストールが成功したかどうかをテストするには、コマンドラインボックスを開いてgccと入力します。すべて問題なければ、次のメッセージが表示されます。

gcc: fatal error: no input files
compilation terminated

これでMinGWのインストールが完了しました。今度は「Hello、World!」と書きます。プログラム。


3。サンプルコードを書く

テキストエディタを開き、以下のコードを入力して、ファイルをloadimg.cppに保存します。

#include "opencv2/highgui/highgui.hpp"
#include <iostream>

using namespace cv;
using namespace std;

int main(int argc, char** argv)
{
  Mat im = imread(argc == 2 ? argv[1] : "lena.jpg", 1);
  if (im.empty())
  {
    cout << "Cannot open image!" << endl;
    return -1;
  }

  imshow("image", im);
  waitKey(0);

  return 0;
}

lena.jpgまたは任意の画像を上記のファイルと同じディレクトリに配置します。コマンドラインボックスを開き、次のように入力して上記のコードをコンパイルします。

g++ -I"C:\opencv\build\include" -L"C:\opencv\build\x86\mingw\lib" loadimg.cpp -lopencv_core243 -lopencv_highgui243 -o loadimg

正常にコンパイルされると、loadimg.exeという名前の実行可能ファイルが作成されます。

タイプ:

loadimg

プログラムを実行します。結果:

The result of your first OpenCV program


4。ここからどこに行きますか?

OpenCV環境の準備ができたので、次は何をしますか?

  1. サンプルディレクトリに移動→C:\opencv\samples\cpp
  2. いくつかのコードを読んでコンパイルします。
  3. 独自のコードを書きます。
61
flowfree

@bsdnoobzの回答の指示は確かに役立ちますが、OpenCVが私のシステムで動作するようにはなりませんでした。

どうやら、ライブラリを動作させるために自分でライブラリをコンパイルする必要があり、事前に構築されたバイナリ(おそらくシステムとの非互換性が原因でプログラムがクラッシュする原因となった)に頼らなかったようです。

私はそれを動作させ、OpenCVのコンパイルとインストール、NetBeansが動作するように設定するための包括的なガイドを書きました。

完全を期すために、以下でも説明します。


OpenCVを初めて使い始めたとき、2つの大きな困難に直面しました。

  1. プログラムがすぐにクラッシュしないようにする。
  2. Netbeansをナイスにプレイさせること、特にtimeheデバッガーを動作させること。

私は多くのチュートリアルと「ハウツー」記事を読みましたが、実際に包括的で徹底的なものはありませんでした。最終的に、環境のセットアップに成功しました。そして、この(すばらしい)ライブラリをしばらく使用した後、この小さなチュートリアルを書くことにしました。

このチュートリアルの3つの部分は次のとおりです。

  1. OpenCVのコンパイルとインストール。
  2. Netbeansの構成。
  3. サンプルプログラム。

私が使用する環境は:Windows 7、OpenCV 2.4.0、Netbeans 7、MinGW 3.20(コンパイラgcc 4.6.2を使用)。

Assumptions:すでにMinGWとNetbeansがシステムにインストールされています。

OpenCVのコンパイルとインストール

OpenCVをダウンロードするとき、アーカイブの実際には、「ビルド」フォルダーにビルド済みのバイナリー(コンパイル済みのライブラリーおよびDLL)が既に含まれています。最初に、誰かがすでに私のためにコンパイルの仕事をしていたと仮定して、私はそれらのバイナリを使用しようとしました。それはうまくいきませんでした。

最終的には、適切に機能するためには自分のシステムでライブラリ全体をコンパイルする必要があると考えました。

幸いなことに、CMakeのおかげでコンパイルプロセスはかなり簡単です。 CMake(Cross-platform Makeの略)は、コンパイラとプラットフォームに固有のmakefileを生成するツールです。 CMakeを使用して、ビルドとコンパイルの設定を構成し、「メイクファイル」を生成して、ライブラリをコンパイルします。

手順は次のとおりです。

  1. CMake をダウンロードしてインストールします(インストールウィザードで、システムPATHにCMakeを追加することを選択します)。
  2. OpenCV の「リリース」バージョンをダウンロードします。
  3. 選択したディレクトリにアーカイブを抽出します。 c:/opencv/を使用します。
  4. CMake GUIを起動します。
    1. ソースディレクトリc:/opencv/を参照します。
    2. バイナリをビルドする場所を選択します。 c:/opencv/releaseを選択しました。
      CMake Configuration - 1
    3. 「構成」をクリックします。開いた画面で、コンパイラに応じてジェネレータを選択します。この例では、「MinGW Makefiles」です。
      CMake Configuration - 2
    4. すべてがロードされるのを待ちます。その後、この画面が表示されます:
      CMake Configuration - 3
    5. 必要に応じて設定を変更するか、デフォルトのままにします。完了したら、もう一度「構成」を押します。ログウィンドウに「Configuration done」と表示され、すべてのセルから赤い背景が消えます。
      CMake Configuration - 4
    6. この時点で、CMakeは、コンパイラでOpenCVをコンパイルするためのメイクファイルを生成する準備ができています。 「生成」をクリックして、メイクファイルが生成されるのを待ちます。プロセスが終了すると、「生成が完了しました」と表示されます。この時点からCMakeは不要になります。
  5. MinGWシェルを開きます(次の手順はWindowsのコマンドプロンプトからも実行できます)。
    1. ディレクトリc:/opencv/release/を入力します。
    2. mingw32-makeと入力してEnterキーを押します。これにより、コンパイルプロセスが開始されます。
      MinGW Make
      MinGW Make - Compilation
    3. コンパイルが完了すると、OpenCVのバイナリを使用する準備が整います。
    4. 便宜上、ディレクトリC:/opencv/release/binをシステムPATHに追加する必要があります。これにより、プログラムが実行に必要なDLLを見つけることができます。

Netbeansの構成

Netbeansには、ヘッダーファイルとコンパイル済みライブラリ(前のセクションで作成された)の検索場所を指定する必要があります。

ヘッダーファイルは、コンパイルとコード補完の2つの理由で必要です。コンパイルされたライブラリは、リンクステージに必要です。

注:デバッグを機能させるには、OpenCV DLLが使用可能である必要があります。これが、それらを含むディレクトリをシステムPATHに追加した理由です(前のセクション、ステップ5.4)。

最初に、NetBeansがMinGWで動作するように正しく構成されていることを確認する必要があります。以下のスクリーンショットを参照して、設定が正しいことを確認してください(ご使用のインストールに応じてパスの変更を検討してください)。Also notemakeコマンドはmsysから、notはCygwinからでなければなりません。

Netbeans MinGW Configuration

次に、Netbeansで作成する新しいプロジェクトごとに、インクルードパス(ヘッダーファイルを含むディレクトリ)、ライブラリパス、および使用する特定のライブラリを定義する必要があります。 「プロジェクト」ペインでプロジェクト名を右クリックし、「プロパティ」を選択します。インクルードパスを追加します(独自のインストールに従ってパスを変更します)。

Netbeans Project Include Path

ライブラリパスを追加します。

Netbeans Libraries Path

使用する特定のライブラリを追加します。これらのライブラリは、リンク段階でプログラムに動的にリンクされます。通常、プログラムの特定のニーズに応じて、coreライブラリとその他のライブラリが必要になります。

Netbeans Include Libraries

これで、OpenCVを使用する準備が整いました。

概要

OpenCVをインストールしてNetbeansで使用するために完了する必要がある一般的な手順は次のとおりです。

  1. OpenCVをコンパイラでコンパイルします。
  2. DLLを含むディレクトリをシステムPATHに追加します(この場合:c:/ opencv/release/bin)。
  3. ヘッダーファイルを含むディレクトリをプロジェクトのインクルードパスに追加します(この例ではc:/ opencv/build/include)。
  4. コンパイルされたライブラリを含むディレクトリをプロジェクトのライブラリパスに追加します(この場合:c:/ opencv/release/lib)。
  5. プロジェクトにリンクする必要がある特定のライブラリを追加します(例:libopencv_core240.dll.a)。

例-OpenCVでの「Hello World」

GUIウィンドウに「Hello World:)」というテキストを描く小さなプログラム例を示します。これを使用して、インストールが正しく機能することを確認できます。プログラムをコンパイルして実行すると、次のウィンドウが表示されます。

OpenCV Hello World

#include "opencv2/opencv.hpp"
#include "opencv2/highgui/highgui.hpp"

using namespace cv;

int main(int argc, char** argv) {
    //create a gui window:
    namedWindow("Output",1);

    //initialize a 120X350 matrix of black pixels:
    Mat output = Mat::zeros( 120, 350, CV_8UC3 );

    //write text on the matrix:
    putText(output,
            "Hello World :)",
            cvPoint(15,70),
            FONT_HERSHEY_PLAIN,
            3,
            cvScalar(0,255,0),
            4);

    //display the image:
    imshow("Output", output);

    //wait for the user to press any key:
    waitKey(0);

    return 0;
}
17
EyalAr

これは私のために働いていません。私はネットで見つけたすべてのチュートリアルに続いて数日を費やし、最終的に自分のバイナリをコンパイルしました。すべてをここで説明します: OpenVC 2.4.5、Eclipse CDT Juno、MinGWエラー0xc0000005

多くの試行錯誤の後、私は this チュートリアルに従って、プリコンパイルされたバイナリが機能しないと不満を感じている人が多いので、自分のバイナリをコンパイルすることにしました。 Eclipse CDT Junoはすでにインストールされています。

私の手順は次のとおりです。

  1. MinGWをダウンロードしてインストールし、c:/ mingw/binを使用してシステムPATHに追加します
  2. http://www.cmake.org からcmakeをダウンロードしてインストールします
  3. OpenCV2.4.5 Windowsバージョンのダウンロード
  4. OpencvをC:\ OpenCV245PC \にインストール/解凍します(README、index.rstおよびCMakeLists.txtはすべてのサブフォルダーにあります)
  5. CMake GUIツールを実行してから、
  6. ソースとしてC:\ OpenCV245PC \を選択します
  7. バイナリをビルドする宛先C:\ OpenCV245MinGW\x86を選択します
  8. 構成ボタンを押し、ジェネレーターとしてMinGW Makefilesを選択します。ウィンドウにはいくつかの赤いハイライトがあります。必要に応じてオプションを選択してください。
  9. Configureボタンagainを押します。これで設定が完了しました。
  10. [生成]ボタンを押します。
  11. 生成が完了したら、プログラムを終了します。
  12. Cmakeプログラムを終了します。
  13. コマンドラインモード(cmd.exe)を実行し、宛先ディレクトリC:\ OpenCV245MinGW\x86に移動します
  14. 「mingw32-make」と入力します。バイナリのビルドの進行状況が表示されます。コマンドが見つからない場合は、システムPATHがc:/ mingw/binで追加されていることを確認する必要があります。選択したオプションに従ってビルドが完了します。
  15. WindowsシステムのPATH([マイコンピューター]> [右クリック]> [プロパティ]> [詳細]> [環境変数]> [パス])で、宛先のbinディレクトリC:\ OpenCV245MinGW\x86\binを追加します
  16. コンピューターを再起動
  17. Eclipse CDT IDEに移動し、サンプルOpenCVコードを使用してC++プログラムを作成します(このトピックの上からコードを使用できます)。
  18. [プロジェクト]> [プロパティ]> [C/C++ビルド]> [設定]> [GCC C++コンパイラ]> [インクルード]に移動し、ソースOpenCVフォルダー「C:\ OpenCV245PC\build\include」を追加します。
  19. [プロジェクト]> [プロパティ]> [C/C++ビルド]> [設定]> [MinGW C++リンカー]> [ライブラリ]に移動し、ライブラリ(-l)ONE BY ONE(これはプロジェクトごとに異なる可能性があり、必要に応じてそれらすべてを追加することも、プロジェクトに必要なものだけを追加することもできます):opencv_calib3d245 opencv_contrib245 opencv_core245 opencv_features2d245 opencv_flann245 opencv_gpu245 opencv_highgui245 opencv_mlcv245245245_cvcv245245245
  20. ビルドされたOpenCVライブラリフォルダー「C:\ OpenCV245MinGW\x86\lib」をLibrary検索パス(-L)に追加します。

このコードを使用して、セットアップをテストできます。

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/opencv.hpp>
#include <iostream>

using namespace std;
using namespace cv;

int main()
{

Mat img = imread("c:/lenna.png", CV_LOAD_IMAGE_COLOR);

namedWindow("MyWindow", CV_WINDOW_AUTOSIZE);
imshow("MyWindow", img);

waitKey(0);
return 0;
}

C:/に画像を置くことを忘れないでください(または適切な場所であればどこでも、Eclipseがアクセスを読んだことを確認してください。

13
Nenad Bulatovic

Opencv 2.4.2をインストールした場合、-lopencv_core240-lopencv_core242に変更する必要があります

私も同じ間違いを犯しました。

3
doenonesmith

Windows 64ビットでは動作します:

  1. ダウンロード opencv-3.0(beta)MinGW (コマンドラインツール);
  2. 上記の各binフォルダーをPATH変数に追加します。
  3. フォルダー「リリース」(任意の名前)を作成します;
  4. 作成されたフォルダーに、プロンプトターミナルを開き、以下のコマンドを実行します。
  5. このコマンドをコピーして貼り付ける

    cmake -G "MinGW Makefiles" -D CMAKE_CXX_COMPILER=mingw32-g++.exe -D WITH_IPP=OFF MAKE_MAKE_PROGRAM=mingw32-make.exe ..\

  6. このコマンドを実行しますmingw32-make

  7. このコマンドを実行しますmingw32-make install

[〜#〜] done [〜#〜]

2
aspadacio

私はこの段階的な手順を使用しましたが、うまくいきました。

http://nenadbulatovic.blogspot.co.il/2013/07/configuring-opencv-245-Eclipse-cdt-juno.html

1
s.shpiz

@Nenad Bulatovicが指摘したように、ライブラリを追加するときは注意が必要です(19番目のステップ)。各ライブラリを行ごとに追加するときに、末尾にスペースを追加しないでください。それ以外の場合、mingwは動作しません。

0
gyro