OpenCV 2.4をインストールし、MinGWでコードをコンパイルするにはどうすればよいですか?
7 に答える
1.OpenCV2.4.3のインストール
まず、sourceforge.netからOpenCV2.4.3を入手します。自己ファイル抽出なので、ファイルをダブルクリックするだけでインストールを開始できます。たとえば、ディレクトリにインストールしますC:\
。
すべてのファイルが抽出されるまで待ちます。C:\opencv
OpenCVヘッダーファイル、ライブラリ、コードサンプルなどを含む新しいディレクトリを作成します。
C:\opencv\build\x86\mingw\bin
次に、システムPATHにディレクトリを追加する必要があります。このディレクトリには、コードの実行に必要なOpenCVDLLが含まれています。
[コントロールパネル] → [システム] → [システムの詳細設定] → [詳細設定]タブ→ [環境変数... ]を開きます。
以下のようなウィンドウが表示されます。
[システム変数]セクションで、 [パス](1)を
選択し、[編集... ] (2)をクリックし、(3)を追加して、[ OK ]をクリックします。C:\opencv\build\x86\mingw\bin
これで、コンピューターへのOpenCV2.4.3のインストールが完了します。
2.MinGWコンパイラスイートのインストール
コードのコンパイルにはgcc(GNUコンパイラコレクション)を使用することを強くお勧めします。gccはLinuxシステムで広く利用可能なコンパイラスイートであり、MinGWはWindowsのネイティブポートです。
Sourceforge.netからMinGWインストーラーをダウンロードし、ダブルクリックしてインストールを開始します。ウィザードに従って、インストールするディレクトリを選択します。たとえば、C:\MinGW
。
インストールする「Cコンパイラ」と「C++コンパイラ」を選択します。
インストーラーはインターネットからいくつかのパッケージをダウンロードするので、しばらく待つ必要があります。インストールが完了したら、前述の手順を使用してシステムパスに追加C:\MinGW\bin
します。
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
プログラムを実行します。結果:
4.ここからどこへ行くのですか?
OpenCV環境の準備ができたので、次は何ですか?
- サンプルディレクトリ→に移動し
C:\opencv\samples\cpp
ます。 - いくつかのコードを読んでコンパイルします。
- 独自のコードを記述します。
@bsdnoobzの回答の説明は確かに役に立ちますが、私のシステムでOpenCVを動作させることができませんでした。
どうやら私はライブラリを動作させるために自分でコンパイルする必要があり、ビルド済みのバイナリを頼りにする必要はありませんでした(おそらく私のシステムとの非互換性のためにプログラムがクラッシュしました)。
私はそれを機能させ、OpenCVをコンパイルしてインストールし、それを使用するようにNetbeansを構成するための包括的なガイドを作成しました。
完全を期すために、以下にも提供されています。
私が最初にOpenCVを使い始めたとき、私は2つの大きな問題に遭遇しました。
- プログラムがすぐにクラッシュしないようにする。
- Netbeansを適切に動作させること、特にデバッガを動作させること。
私は多くのチュートリアルと「ハウツー」記事を読みましたが、どれも本当に包括的で徹底的なものではありませんでした。最終的に、私は環境の設定に成功しました。そして、この(素晴らしい)ライブラリをしばらく使用した後、私はこの小さなチュートリアルを書くことにしました。これは、他の人に役立つことを願っています。
このチュートリアルの3つの部分は次のとおりです。
- OpenCVのコンパイルとインストール。
- Netbeansの構成。
- サンプルプログラム。
私が使用している環境は、Windows 7、OpenCV 2.4.0、Netbeans 7、およびMinGW 3.20(コンパイラーgcc 4.6.2を使用)です。
前提条件:システムにMinGWとNetbeansがすでにインストールされている。
OpenCVのコンパイルとインストール
OpenCVをダウンロードする場合、アーカイブには実際には、「ビルド」フォルダーにビルド済みのバイナリ(コンパイル済みライブラリとDLL)がすでに含まれています。最初は、誰かが私のためにコンパイルする仕事をすでに行っていると仮定して、それらのバイナリを使用してみました。それはうまくいきませんでした。
最終的には、ライブラリが正しく機能するためには、ライブラリ全体を自分のシステムでコンパイルする必要があると考えました。
幸い、CMakeのおかげで、コンパイルプロセスはかなり簡単です。CMake(Cross-platform Makeの略)は、コンパイラーとプラットフォームに固有のmakefileを生成するツールです。CMakeを使用して、ビルドとコンパイルの設定を構成し、「makefile」を生成してから、ライブラリをコンパイルします。
手順は次のとおりです。
- CMakeをダウンロードしてインストールします(インストールウィザードで、CMakeをシステムPATHに追加することを選択します)。
- OpenCVの「リリース」バージョンをダウンロードします。
- 選択したディレクトリにアーカイブを抽出します。を使用し
c:/opencv/
ます。 - CMakeGUIを起動します。
- ソースディレクトリを参照し
c:/opencv/
ます。 - バイナリを構築する場所を選択します。私はを選び
c:/opencv/release
ました。
- [構成]をクリックします。開いた画面で、コンパイラに応じてジェネレータを選択します。私たちの場合は「MinGWMakefiles」です。
- すべてがロードされるのを待ちます。その後、次の画面が表示されます。
- 必要に応じて設定を変更するか、デフォルトのままにします。完了したら、もう一度[構成]を押します。ログウィンドウに「構成が完了しました」と表示され、すべてのセルから赤い背景が消えるはずです。
- この時点で、CMakeは、コンパイラーでOpenCVをコンパイルするためのmakefileを生成する準備ができています。[生成]をクリックして、makefileが生成されるのを待ちます。プロセスが終了すると、「生成が完了しました」と表示されます。この時点から、CMakeは不要になります。
- ソースディレクトリを参照し
- MinGWシェルを開きます(次の手順は、Windowsのコマンドプロンプトからも実行できます)。
- ディレクトリを入力し
c:/opencv/release/
ます。 - 入力
mingw32-make
してEnterキーを押します。これにより、コンパイルプロセスが開始されます。
- コンパイルが完了すると、OpenCVのバイナリを使用できるようになります。
- 便宜上、ディレクトリ
をシステムPATHに追加する必要が
C:/opencv/release/bin
あります。これにより、プログラムが実行に必要なDLLを確実に見つけることができます。
- ディレクトリを入力し
Netbeansの構成
Netbeansには、ヘッダーファイルとコンパイル済みライブラリ(前のセクションで作成したもの)の場所を通知する必要があります。
ヘッダーファイルは、コンパイルとコード補完の2つの理由で必要になります。コンパイルされたライブラリは、リンク段階で必要です。
注:デバッグを機能させるには、OpenCV DLLが使用可能である必要があります。そのため、OpenCV DLLを含むディレクトリをシステムPATHに追加しました(前のセクション、ステップ5.4)。
まず、NetbeansがMinGWで動作するように正しく構成されていることを確認する必要があります。以下のスクリーンショットを参照して、設定が正しいことを確認してください(ご使用のインストールに応じてパスが変更されることを考慮してください)。また、コマンドはCygwinからではなくmsysからのものである必要があることに注意
してmake
ください。
次に、Netbeansで作成する新しいプロジェクトごとに、インクルードパス(ヘッダーファイルを含むディレクトリ)、ライブラリパス、および使用する特定のライブラリを定義する必要があります。「プロジェクト」ペインでプロジェクト名を右クリックし、「プロパティ」を選択します。インクルードパスを追加します(ご使用のインストールに応じてパスを変更します)。
ライブラリパスを追加します。
使用する特定のライブラリを追加します。これらのライブラリは、リンク段階でプログラムに動的にリンクされます。通常core
、プログラムの特定のニーズに応じて、ライブラリとその他のライブラリが必要になります。
これで、OpenCVを使用する準備が整いました。
概要
OpenCVをインストールしてNetbeansで使用するために完了する必要のある一般的な手順は次のとおりです。
- OpenCVをコンパイラでコンパイルします。
- DLLを含むディレクトリをシステムPATH(この場合はc:/ opencv / release / bin)に追加します。
- ヘッダーファイルを含むディレクトリをプロジェクトのインクルードパス(この場合はc:/ opencv / build / include)に追加します。
- コンパイルされたライブラリを含むディレクトリをプロジェクトのライブラリパス(この場合はc:/ opencv / release / lib)に追加します。
- プロジェクトにリンクする必要のある特定のライブラリを追加します(例:libopencv_core240.dll.a)。
例-OpenCVを使用した「HelloWorld」
これは、GUIウィンドウに「HelloWorld:)」というテキストを描画する小さなサンプルプログラムです。これを使用して、インストールが正しく機能することを確認できます。プログラムをコンパイルして実行すると、次のウィンドウが表示されます。
#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;
}
これは私にはうまくいきません。ネット上で見つけたすべてのチュートリアルを数日かけて追跡し、最終的に自分のバイナリをコンパイルしました。すべてがここで説明されています:OpenVC 2.4.5、Eclipse CDT Juno、MinGWエラー0xc0000005
多くの試行錯誤の末、私はこのチュートリアルに従い、自分のバイナリをコンパイルすることにしました。プリコンパイルされたバイナリが機能していないと不満を言う人が多すぎるようです。EclipseCDTJunoはすでにインストールされています。
私の手順は次のとおりです。
- MinGWをダウンロードしてインストールし、c:/ mingw/binを使用してシステムPATHに追加します
- http://www.cmake.orgからcmakeをダウンロードしてインストールします
- OpenCV2.4.5Windowsバージョンをダウンロードする
- OpencvをC:\ OpenCV245PC \にインストール/解凍します(README、index.rstおよびCMakeLists.txtはすべてのサブフォルダーにあります)
- CMake GUIツールを実行してから、
- ソースとしてC:\OpenCV245PC\を選択します
- バイナリをビルドする宛先C:\ OpenCV245MinGW\x86を選択します
- 構成ボタンを押し、ジェネレーターとしてMinGWMakefilesを選択します。ウィンドウにいくつかの赤いハイライトがあります。必要に応じてオプションを選択してください。
- もう一度[構成]ボタンを押します。これで設定が完了しました。
- [生成]ボタンを押します。
- 生成が完了したら、プログラムを終了します。
- Cmakeプログラムを終了します。
- コマンドラインモード(cmd.exe)を実行し、宛先ディレクトリC:\ OpenCV245MinGW\x86に移動します
- 「mingw32-make」と入力します。バイナリの構築の進捗状況が表示されます。コマンドが見つからない場合は、システムPATHがc:/ mingw/binで追加されていることを確認する必要があります。選択したオプションに従ってビルドが続行され、完了します。
- WindowsシステムのPATH([マイコンピューター]>右ボタンクリック>[プロパティ]>[詳細設定]>[環境変数]>[パス])で、宛先のbinディレクトリC:\ OpenCV245MinGW \ x86\binを追加します。
- コンピューターを再起動
- Eclipse CDT IDEに移動し、サンプルのOpenCVコードを使用してC ++プログラムを作成します(このトピックの上部にあるコードを使用できます)。
- [プロジェクト]>[プロパティ]>[C/C++ビルド]>[設定]>[GCCC++コンパイラ]>[インクルード]に移動し、ソースのOpenCVフォルダー "C:\ OpenCV245PC \ build\include"を追加します。
- [プロジェクト]>[プロパティ]>[C/C++ビルド]>[設定]>[MinGWC++リンカー]>[ライブラリ]に移動し、ライブラリに1つずつ追加します(-l) 1つずつ(これはプロジェクトごとに異なる可能性があります。必要に応じてすべて追加できます。それらのいくつかはあなたがあなたのプロジェクトに必要なものだけです):opencv_calib3d245 opencv_contrib245 opencv_core245 opencv_features2d245 opencv_flann245 opencv_gpu245 opencv_highgui245 opencv_imgproc245 opencv_legacy245 opencv_ml245 opencv_nonfree245 opencv_
- 構築されたOpenCVライブラリフォルダー「C:\ OpenCV245MinGW \ x86 \ lib」をライブラリ検索パス(-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がアクセスを読み取ったことを確認してください。
opencv 2.4.2をインストールした場合は、を次のように変更する必要があります-lopencv_core240
。-lopencv_core242
私も同じ過ちを犯しました。
Windows 64ビットでは、次のように機能します。
- opencv-3.0(ベータ版)、MinGW(コマンドラインツール)をダウンロードします。
- 上記のそれぞれのbinフォルダーをPATHvarに追加します。
- にフォルダ「release」(任意の名前を指定できます)を作成します。
- 作成したフォルダにプロンプトターミナルを開き、以下のコマンドを実行します。
このコマンドをコピーして貼り付ける
cmake -G "MinGW Makefiles" -D CMAKE_CXX_COMPILER=mingw32-g++.exe -D WITH_IPP=OFF MAKE_MAKE_PROGRAM=mingw32-make.exe ..\
このコマンドを実行します
mingw32-make
このコマンドを実行します
mingw32-make install
終わり
私はこのステップバイステップの説明を使用しました、そしてそれは働きました。
http://nenadbulatovic.blogspot.co.il/2013/07/configuring-opencv-245-eclipse-cdt-juno.html
@Nenad Bulatovicが指摘しているように、ライブラリを追加するときは注意が必要です(19番目のステップ)。各ライブラリを1行ずつ追加するときは、末尾にスペースを追加しないでください。そうでなければ、mingwは大騒ぎになります。