OpenCV 2.4をインストールし、MinGWでコードをコンパイルするにはどうすればよいですか?
1。 OpenCV 2.4.3のインストール
まず、sourceforge.netから OpenCV 2.4. を取得します。自己ファイル抽出なので、ファイルをダブルクリックしてインストールを開始します。 C:\
などのディレクトリにインストールします。
すべてのファイルが抽出されるまで待ちます。 OpenCVヘッダーファイル、ライブラリ、コードサンプルなどを含む新しいディレクトリC:\opencv
を作成します。
次に、C:\opencv\build\x86\mingw\bin
ディレクトリをシステムPATHに追加する必要があります。このディレクトリには、コードの実行に必要なOpenCV DLLが含まれています。
コントロールパネル→システム→システムの詳細設定→詳細タブ→環境変数...
次のようなウィンドウが表示されます。
[システム変数]セクションで、
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
.
インストールする「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つの大きな困難に直面しました。
私は多くのチュートリアルと「ハウツー」記事を読みましたが、実際に包括的で徹底的なものはありませんでした。最終的に、環境のセットアップに成功しました。そして、この(すばらしい)ライブラリをしばらく使用した後、この小さなチュートリアルを書くことにしました。
このチュートリアルの3つの部分は次のとおりです。
私が使用する環境は:Windows 7、OpenCV 2.4.0、Netbeans 7、MinGW 3.20(コンパイラgcc 4.6.2を使用)。
Assumptions:すでにMinGWとNetbeansがシステムにインストールされています。
OpenCVをダウンロードするとき、アーカイブの実際には、「ビルド」フォルダーにビルド済みのバイナリー(コンパイル済みのライブラリーおよびDLL)が既に含まれています。最初に、誰かがすでに私のためにコンパイルの仕事をしていたと仮定して、私はそれらのバイナリを使用しようとしました。それはうまくいきませんでした。
最終的には、適切に機能するためには自分のシステムでライブラリ全体をコンパイルする必要があると考えました。
幸いなことに、CMakeのおかげでコンパイルプロセスはかなり簡単です。 CMake(Cross-platform Makeの略)は、コンパイラとプラットフォームに固有のmakefileを生成するツールです。 CMakeを使用して、ビルドとコンパイルの設定を構成し、「メイクファイル」を生成して、ライブラリをコンパイルします。
手順は次のとおりです。
c:/opencv/
を使用します。c:/opencv/
を参照します。c:/opencv/release
を選択しました。c:/opencv/release/
を入力します。mingw32-make
と入力してEnterキーを押します。これにより、コンパイルプロセスが開始されます。C:/opencv/release/bin
をシステムPATHに追加する必要があります。これにより、プログラムが実行に必要なDLLを見つけることができます。Netbeansには、ヘッダーファイルとコンパイル済みライブラリ(前のセクションで作成された)の検索場所を指定する必要があります。
ヘッダーファイルは、コンパイルとコード補完の2つの理由で必要です。コンパイルされたライブラリは、リンクステージに必要です。
注:デバッグを機能させるには、OpenCV DLLが使用可能である必要があります。これが、それらを含むディレクトリをシステムPATHに追加した理由です(前のセクション、ステップ5.4)。
最初に、NetBeansがMinGWで動作するように正しく構成されていることを確認する必要があります。以下のスクリーンショットを参照して、設定が正しいことを確認してください(ご使用のインストールに応じてパスの変更を検討してください)。Also notemake
コマンドはmsysから、notはCygwinからでなければなりません。
次に、Netbeansで作成する新しいプロジェクトごとに、インクルードパス(ヘッダーファイルを含むディレクトリ)、ライブラリパス、および使用する特定のライブラリを定義する必要があります。 「プロジェクト」ペインでプロジェクト名を右クリックし、「プロパティ」を選択します。インクルードパスを追加します(独自のインストールに従ってパスを変更します)。
ライブラリパスを追加します。
使用する特定のライブラリを追加します。これらのライブラリは、リンク段階でプログラムに動的にリンクされます。通常、プログラムの特定のニーズに応じて、core
ライブラリとその他のライブラリが必要になります。
これで、OpenCVを使用する準備が整いました。
OpenCVをインストールしてNetbeansで使用するために完了する必要がある一般的な手順は次のとおりです。
GUIウィンドウに「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;
}
これは私のために働いていません。私はネットで見つけたすべてのチュートリアルに続いて数日を費やし、最終的に自分のバイナリをコンパイルしました。すべてをここで説明します: OpenVC 2.4.5、Eclipse CDT Juno、MinGWエラー0xc0000005
多くの試行錯誤の後、私は this チュートリアルに従って、プリコンパイルされたバイナリが機能しないと不満を感じている人が多いので、自分のバイナリをコンパイルすることにしました。 Eclipse CDT Junoはすでにインストールされています。
私の手順は次のとおりです。
このコードを使用して、セットアップをテストできます。
#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ビットでは動作します:
このコマンドをコピーして貼り付ける
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
[〜#〜] done [〜#〜]
私はこの段階的な手順を使用しましたが、うまくいきました。
http://nenadbulatovic.blogspot.co.il/2013/07/configuring-opencv-245-Eclipse-cdt-juno.html
@Nenad Bulatovicが指摘したように、ライブラリを追加するときは注意が必要です(19番目のステップ)。各ライブラリを行ごとに追加するときに、末尾にスペースを追加しないでください。それ以外の場合、mingwは動作しません。