EclipseでOpenCVの開発環境を構築する

# EclipseでOpenCVの開発環境を構築

忘れっぽい私による忘れないための投稿です。

## 環境

* Ubuntu13.10
* Eclipse Standard 4.3.1
* OpenCV2.4.7

言語はC++です。

## eclipseをダウンロード
これがないと話が始まりませんのでダウンロードしましょう。
http://www.eclipse.org/downloads/

## pleiadesもダウンロード
日本語化したいのでこれもダウンロードしましょう。
http://mergedoc.sourceforge.jp/

### eclipseをインストールして日本語化

インストール先は`/usr/local/eclipse`です。`~/Downloads`にファイルがダウンロードされていると想定しています。

```
cd /usr/local
sudo tar xvf ~/Downloads/eclipse-standard-kepler-SR1-linux-gtk-x86_64.tar.gz
cd eclipse
sudo unzip ~/Downloads/pleiades.zip
sudo vi eclipse.ini
```

eclipse.iniに、次の行を追記します。

```
-javaagent:/usr/local/eclipse/plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar
```

これで日本語化されます。

eclipseを実行する前に忘れずにOpenJDKをインストールしましょう。

```
sudo apt-get install openjdk-7-jdk
```

## こいつは困った
![Screenshot_from_2013-11-13 08:38:36.png](https://qiita-image-store.s3.amazonaws.com/0/24415/d658f2ca-9de2-fbb4-297b-2ccd464e0972.png)

ここまでできたらeclipseが実行できます。実行すると、おそらくメニューバーが表示されずにびっくりすると思います。
こいつは困った。なんとかしましょう。

`eclipse.desktop`を編集して何とかします。

```
sudo gedit /usr/share/applications/eclipse.desktop
```
```
[Desktop Entry]
Version=4.3.1
Name=Eclipse
Exec=env UBUNTU_MENUPROXY=0 /usr/local/eclipse/eclipse
Icon=eclipse.png
Terminal=false
Type=Application
Categories=Utility;Application
```

dash(windowsキーを押すと表示されるアレのことです)から起動するとメニューバーが表示されています。ふー良かった。良かった。起動しやすいようにランチャーに登録しておきましょう。
C++が使えるように　C/C++　開発ツール　SDK　をインストールします。ここまでできたら、eclipseで実行可能なHello World C++プロジェクトを作って、実行してみてHello Worldが表示されるのを確認しましょう。

## OpenCVのインストール

OpenCVのインストールをしましょう。
インストールにまず必要なものは以下の通りです。

```
sudo apt-get install git cmake g++ libgtk2.0-dev
```

sourceforgeからでもいいですが、gitからcloneしてOpenCVをインストールすることにします。
現在の最新版は2.4.7です。インストール先は`/usr/local/opencv/2.4.7/`にします。

```
git clone https://github.com/Itseez/opencv.git
mkdir opecnv/build
cd opencv/build
sudo mkdir /usr/local/opencv
sudo mkdir /usr/local/opencv/2.4.7
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/opencv/2.4.7 ..
make
sudo make install
```

結構時間がかかると思います。終わったらeclipseを起動します。
先ほど作ったHello World C++プロジェクトがあると思いますので、それの設定を変更してOpenCVが使えるようにします。

## インクルードパス、ライブラリパスの設定

プロジェクトを右クリックし、プロパティ->C/C++ビルド->設定を開きます。
GCC C++ Compiler->インクルードのインクルード・パス(-I)に`/usr/local/opencv/2.4.7/include`を追加します。これはすぐ済むと思います。
次にライブラリです。
GCC C++ Linker->ライブラリーのライブラリー検索パス(-L)に`/usr/local/opencv/2.4.7/lib`を追加します。
ライブラリー(-l)も追加しなければなりません。`opencv_core`をとりあえず追加してOKを押しましょう。
数が多いと追加するのが大変ですね。
そこで、~/workspace/helloworld/.cprojectを開きます。opencv_coreライブラリーが追加されている個所があると思いますので、そこに以下を書きます。これで一個ずつ追加しなくても済みます。

```
<listOptionValue builtIn="false" value="opencv_calib3d"/>
<listOptionValue builtIn="false" value="opencv_contrib"/>
<listOptionValue builtIn="false" value="opencv_core"/>
<listOptionValue builtIn="false" value="opencv_features2d"/>
<listOptionValue builtIn="false" value="opencv_flann"/>
<listOptionValue builtIn="false" value="opencv_highgui"/>
<listOptionValue builtIn="false" value="opencv_imgproc"/>
<listOptionValue builtIn="false" value="opencv_legacy"/>
<listOptionValue builtIn="false" value="opencv_ml"/>
<listOptionValue builtIn="false" value="opencv_nonfree"/>
<listOptionValue builtIn="false" value="opencv_objdetect"/>
<listOptionValue builtIn="false" value="opencv_photo"/>
<listOptionValue builtIn="false" value="opencv_stitching"/>
<listOptionValue builtIn="false" value="opencv_superres"/>
<listOptionValue builtIn="false" value="opencv_ts"/>
<listOptionValue builtIn="false" value="opencv_video"/>
<listOptionValue builtIn="false" value="opencv_videostab"/>
```
全部のライブラリを必ずしも使うわけではないので必要なものだけ追加すれば済みますが、とりあえず全部追加しときゃええねん、という横着な考えです。これが済めばこんなかんじになっているはずです。
![Screenshot_from_2013-11-18 00:27:32.png](https://qiita-image-store.s3.amazonaws.com/0/24415/da18caa2-e5d3-6841-ba90-957a418317f3.png)

さて、インクルードパスとライブラリー検索パスを設定し終えましたが、これだけではライブラリをeclipseはみつけてくらないのです。なので環境変数を追加します。

例によってプロジェクトを右クリックし、実行->実行の構成を開き、そして環境タブを開きます。そんでもって環境変数を追加します。
名前：LD_LIBRARY_PATH
値：/usr/local/opencv/2.4.7/lib/

こんなふうになればおｋです。
![Screenshot_from_2013-11-18 00:33:03.png](https://qiita-image-store.s3.amazonaws.com/0/24415/5c698bf1-27ac-0b44-7075-a15a7c2bc2b3.png)

## プログラムを書いて実行

さて長い前ふりもようやく終わりです。環境が構築できたので、プログラムを書いて実行してみたくなっていると思います。画像を読み込んで表示するだけのプログラムを動かしてみましょう。
その前に、はやる気持ちを抑えつつ、lena.jpgをhelloworldプロジェクト直下にコピーします。`~/Downloads/opencv/samples/cpp/lena.jpg`にあると思います。

```cpp
#include "opencv2/opencv.hpp"

int main() {
	// レナさんの画像を開きます。
	cv::Mat image = cv::imread("lena.jpg");
	// 画像をウィンドウに表示します。
	imshow("lena", image);
	// なにかキーが入力されるまで待ちます。
	cv::waitKey(0);

	return 0;
}
```

レナさんのご尊顔が表示されたら大成功です。なにかキーを押すとウィンドウが閉じてプログラムは終了します。
![Screenshot_from_2013-11-18 00:41:55.png](https://qiita-image-store.s3.amazonaws.com/0/24415/a06f60df-683f-7e1c-0a79-70dbc578bf8a.png)

これでEclipseをつかったOpenCVの開発環境が構築できました。いろいろと遊んでみると楽しいと思います。