EclipseでJava用のOpenCVを使う(for windows)

#■EclipseでOpenCVを使えるようにする

忘備の意味を込めて、EclipseにJava用のOpenCVをインストールする手順をメモしておきます。
Eclipseのインストールはweb上の様々なところに書いてあるので割愛し、既にEclipseがインストールされている状況を想定しています。環境は以下です。

　　　**OS : Windows8.1**
　　　**Eclipse : Version Mars.2 Release (4.5.2)**
　　　**OpenCV : Version2.4.12** (2.X系で最新Version 2016/03/05時点)


#① OpenCVの.exeファイルをダウンロード
まずは、OpenCVを[ここから](http://opencv.org/downloads.html)からダウンロードします。Windowsにインストールするので、OpenCV for Windowsをダウンロードしてください。もちろん、LinuxやMacにインストールする場合は、OpenCV for Linux/Macなど、環境に適したものを選択してください。
2016年3月5日現在で最新のOpenCV 3.1でも良いのですが、OpenCVは2.X系と3.X系でちょこちょこ変わった部分があるので、今回は2.X系で最新のVersionをインストールすることにします。この辺りは、自分の目的に合わせてインストールすれば良いかと。OpenCVが初めての方であれば、3.X系でもOKです。

#② ダウンロードしたOpenCVの.exeを実行してOpenCVをインストール
①でダウンロードしたopencv-2.4.12.exeを実行します。①でダウンロードパスを変更していなければ、この実行ファイルは通常はPC → ダウンロード フォルダにダウンロードされているはずです。
実行すると以下のようにファイルを展開するパスを聞かれますが、デフォルト設定でOKです。Extractを押してインストールを開始します。

![図1.png](https://qiita-image-store.s3.amazonaws.com/0/116157/1507da0f-3671-5167-e4e2-0fcd34e6cb52.png)

インストールが完了すると先ほど指定したパスに"opencv"というフォルダができます。
特にこのままでも問題ありませんが、のちのちOpenCVの3.X系もインストールして2.X系と共存させたいと思っているので、フォルダにバージョン名をつけてリネームします( opencv → opencv_2.4.12 ) 。また、**C:/Users/hoge/** の直下にこのフォルダを移動させます。

#③ Eclipseで使えるように設定する
Eclipseで新規プロジェクトを作成して、ビルドの設定にOpenCVのJava用の.jarファイルを追加します。
まずは、Eclipseで File → New → Java Project で新規プロジェクトを作成します。Project Nameは今回は OpenCVTestとしました。
次に、作成したプロジェクトを右クリックして Build Path → Add External Archives を選択し、Java用の.jarファイルを選択します。.jarファイルはbuilldフォルダ → javaフォルダの下にある opencv-2412.jar です。
今回は以下↓のパスになっています。
**C:/Users/hoge/opencv_2.4.12/build/java/opencv-2412.jar**
.jarファイルが正しく指定できれば、JavaのProject直下の Referenced Libraries に opencv-2412.jar が入っています。

![図2.png](https://qiita-image-store.s3.amazonaws.com/0/116157/50ede6e8-b9e9-1aaf-bd54-350cd3cc8cf1.png)

#④ Pathの設定
OpenCVのdllファイルを使用するため、WindowsのPathの設定をします。
Windowsでシステムの詳細設定 → 環境変数を選択。そこから、システム環境変数の Pathを選択して、編集をクリックします。

![図6.png](https://qiita-image-store.s3.amazonaws.com/0/116157/35576e24-d2b7-52e3-69c7-451426f9a441.png)

すると、システム変数の編集ウィンドウが開くので、変数値の一番最後にセミコロン(;)で区切ってdllファイルがあるパスを追加します。今回は64bitなのでx64直下にある opencv_java2412.dll を使用するので、この.dllファイルがある以下↓のパスです。
**C:/Users/hoge/opencv_2.4.12/build/java/x64**

以上① ~ ④でインストールおよび設定は完了です。


#⑤ 動作確認
問題なくOpenCVが使えるようになっているか、簡単なテストコードで確認してみます。OpenCVでPC内にある画像を読み込んで、グレー画像に変換するコードです。
作成したEclipseのProject (OpenCVTest)の srcを右クリック → New → Class でテスト用のクラスを作成します。
PackageとクラスのNameは適当に決めてください。今回はPackageは test、クラスのNameはImgConvに設定して、自動で生成されるImgConv.javaを以下のように編集しました。

```java:ImgConv.java
package test;

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.highgui.Highgui;
import org.opencv.imgproc.Imgproc;

public class ImgConv {	
	static{
		System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
	}
	
	public static void main(String[] args) {
		String path_in = "C:/Users/hoge/Lenna.bmp";
		String path_out = "C:/Users/hoge/Lenna_gray.bmp";

		Mat mat_src = new Mat();
		Mat mat_dst = new Mat();
		
		mat_src = Highgui.imread(path_in);							// 入力画像の読み込み
		Imgproc.cvtColor(mat_src, mat_dst, Imgproc.COLOR_BGR2GRAY);	// カラー画像をグレー画像に変換
		Highgui.imwrite(path_out, mat_dst);							// 出力画像を保存
	}

}
```
以下↓のコード。これは、[IBMのサイト](http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_71/rzaha/jni.htm?lang=ja
)を参考にすると分かりやすいです。
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

実行すると、入力したカラー画像がグレー画像に変換され、問題なくEclipseでOpenCVを使えていることが確認できました。

![図11.png](https://qiita-image-store.s3.amazonaws.com/0/116157/f13fba33-d350-f0dd-5a5b-4053d0a5bda8.png)