前のチュートリアル: gccとCMakeでOpenCVを使用する
次のチュートリアル: Windowsへのインストール
| |
| 原著者 | Ana Huamán |
| 互換性 | OpenCV >= 3.0 |
- 警告
- このチュートリアルには古い情報が含まれている可能性がある。
前提条件
2つの方法、1つはプロジェクトを直接作成する方法、もう1つはCMakeによる方法。前提条件
- Having installed Eclipse in your workstation (only the CDT plugin for C/C++ is needed). You can follow the following steps:
- OpenCVをインストール済みであること。まだの場合はこちらを参照。
プロジェクトの作成
- Eclipseを起動する。フォルダ内にある実行ファイルを実行するだけでよい。
- File -> New -> C/C++ Project へ進む
- プロジェクトの名前(例: DisplayImage)を選ぶ。この例ではEmpty Projectで問題ない。
- 他はすべてデフォルトのままにする。Finishを押す。
- プロジェクト(この場合はDisplayImage)がProject Navigator(通常はウィンドウの左側)に表示されるはずである。
- Now, let's add a source file using OpenCV:
- (Navigator内の)DisplayImageを右クリックする。New -> Folder 。
- フォルダにsrcと名前を付け、Finishを押す
- 新しく作成したsrcフォルダを右クリックする。New source fileを選ぶ:
- DisplayImage.cppと名前を付ける。Finishを押す
- これで、空の .cpp ファイルを持つプロジェクトができた。サンプルコードを書き込んでみよう (言い換えると、以下のスニペットをコピー&ペーストする):
#include <opencv2/opencv.hpp>
int main(
int argc,
char** argv )
{
image = imread( argv[1], IMREAD_COLOR );
if( argc != 2 || !image.
data )
{
printf( "No image data \n" );
return -1;
}
namedWindow( "Display Image", WINDOW_AUTOSIZE );
imshow( "Display Image", image );
waitKey(0);
return 0;
}
Comma-separated Matrix Initializer.
Definition mat.hpp:964
uchar * data
pointer to the data
Definition mat.hpp:2491
int main(int argc, char *argv[])
Definition highgui_qt.cpp:3
- We are only missing one final step: To tell OpenCV where the OpenCV headers and libraries are. For this, do the following:
- Project–>Properties へ進む
- In C/C++ Build, click on Settings. At the right, choose the Tool Settings Tab. Here we will enter the headers and libraries info:
- GCC C++ Compilerで、Includesへ進む。Include paths(-l)に、opencvがインストールされたフォルダのパスを含める必要がある。この例では、それは /usr/local/include/opencv である。
- 覚え書き
- opencvのファイルがどこにあるか分からない場合は、Terminalを開いて次のように入力する:
pkg-config --cflags opencv
例えば、このコマンドでは次のような出力が得られた: -I/usr/local/include/opencv -I/usr/local/include
次にGCC C++ Linkerへ進む。ここでは2つの欄を埋める必要がある:
まずLibrary search path (-L)に、opencvのライブラリがある場所へのパスを記述する。私の場合、パスは次のとおりである::
/usr/local/lib
次にLibraries(-l)に、必要になりうるOpenCVのライブラリを追加する。通常、(単純なアプリケーションでは)以下のリストの最初の4つだけで十分である。私の場合は、全部をまとめて使う予定なので、すべて入れている:
opencv_core opencv_imgproc opencv_imgcodecs opencv_highgui opencv_videoio opencv_video opencv_features opencv_geometry opencv_objdetect opencv_flann
ライブラリがどこにあるか分からない場合(または単に神経質でパスが正しいことを確認したい場合)は、Terminalに次のように入力する:
(確認したい場合に備えて)私の出力は次のとおりだった:
-L/usr/local/lib -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_video -lopencv_features -lopencv_geometry -lopencv_calib -lopencv_stereo -lopencv_objdetect -lopencv_videoio -lopencv_imgcodecs -lopencv_flann
これで完了である。OKをクリックする
フォルダを確認すると、そこに実行ファイルがあるはずである。
実行ファイルの実行
これで、実行できる実行ファイルが用意できた。Terminalを使うなら、おそらく次のようにするだろう:
cd <DisplayImage_directory>
cd src
./DisplayImage ../images/HappyLittleFish.png
引数として使う画像が <DisplayImage_directory>/images/HappyLittleFish.png にあると仮定する。これはこのまま実行してもよいが、Eclipseから行ってみよう:
- Run->Run Configurations へ進む
- C/C++ Application の下に、実行ファイルの名前 + Debug が表示される(表示されない場合は、C/C++ Application を数回クリックする)。その名前(この場合はDisplayImage Debug)を選択する。
- 次に、ウィンドウの右側で Arguments タブを選ぶ。開きたい画像ファイルのパス(workspace/DisplayImage フォルダからの相対パス)を入力する。ここでは HappyLittleFish.png を使う:
- Apply ボタンをクリックし、次に Run をクリックする。魚の画像(または使用した画像)が表示された OpenCV のウィンドウがポップアップするはずである。
- おめでとう! これで Eclipse を使って OpenCV を楽しむ準備が整った。
V2: Eclipse (プラグイン CDT) で CMake+OpenCV を使う
foo というディレクトリに新しいファイル helloworld.cpp があるか、または作成するとする:
#include <opencv2/opencv.hpp>
int main (
int argc,
char **argv )
{
putText(img,
"Hello World!",
Point( 200, 400 ), FONT_HERSHEY_SIMPLEX | FONT_ITALIC, 1.0,
Scalar( 255, 255, 0 ));
imshow("My Window", img);
waitKey();
return 0;
}
#define CV_8U
Definition interface.h:54
- ビルド用ディレクトリを、たとえば foo の下に作成する: mkdir /build。次に cd build。
- build に
CmakeLists.txt ファイルを置く: PROJECT( helloworld_proj )
FIND_PACKAGE( OpenCV REQUIRED )
ADD_EXECUTABLE( helloworld helloworld.cxx )
TARGET_LINK_LIBRARIES( helloworld \f${OpenCV_LIBS} )
- cmake-gui .. を実行し、opencv をビルドした場所を必ず記入する。
- 次に configure をクリックし、続いて generate をクリックする。問題なければ cmake-gui を終了する
make -j4 を実行する(-j4 は省略可能で、コンパイラに4スレッドでビルドするよう指示するだけである)。ビルドが通ることを確認する。
- eclipse を起動する。ワークスペースは任意のディレクトリに置くが、foo や
foo\build の中には 置かない
- Project Explorer セクションで右クリックする。Import を選び、C/C++ フィルタを開く。Makefile Project として Existing Code を選ぶ。
- プロジェクトに名前を付ける。たとえば helloworld。既存コードの場所
foo\build(cmake-gui を実行した場所)を参照する。"Toolchain for Indexer Settings" で Linux GCC を選び、Finish を押す。
- Right click in the Project Explorer section. Select Properties. Under C/C++ Build, set the build directory: from something like
${workspace_loc:/helloworld} to ${workspace_loc:/helloworld}/build since that's where you are building to.
- また、必要に応じて Build コマンドを make から
make VERBOSE=1 -j4 のように変更してもよい。これはコンパイラにデバッグ用の詳細なシンボルファイルを生成させ、さらに4つの並列スレッドでコンパイルするよう指示するものである。
- 完了!