OpenCV を使ってみる ( Windows + Java )

機会がありまして OpenCV をちょこっと触ってみたので、インストール方法等含めメモしておきます。
今回は Windows + Java 環境での使用になります。

1. ダウンロード / インストール


以下 Web ページの「OpenCV for Windows」からダウンロードする。現時点 ( 2015/07/15 ) の最新版は 3.0.0 みたいです。

OpenCV | OpenCV
http://opencv.org/

opencv-3.0.0.exe をダブルクリックして、適当なディレクトリに展開する。今回は "C:\devspace\opencv\3.0.0" に展開しました。


2. Eclipse で開発するための準備


以下のドキュメントが参考になります。

OpenCV: Using OpenCV Java with Eclipse
http://docs.opencv.org/master/d1/d0a/tutorial_java_eclipse.html

やることとしては
* C:\devspace\opencv\3.0.0\opencv\build\java\opencv-300.jar にクラスパスを通す
* [Native library location] に "C:\devspace\opencv\3.0.0\opencv\build\java\x64" を設定する ( 32bit 環境の場合 "x86" の方で )
だけです。


3. サンプルの実行1


上記の「OpenCV: Using OpenCV Java with Eclipse」に Hello.java があるので、そいつを実行してみる。

package test;

import org.opencv.core.Core;
import org.opencv.core.CvType;
import org.opencv.core.Mat;

public class Hello {
  public static void main(String[] args) {
    System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
    Mat mat = Mat.eye(3, 3, CvType.CV_8UC1);
    System.out.println("mat = " + mat.dump());
  }
}

* 実行結果

mat = [  1,   0,   0;
   0,   1,   0;
   0,   0,   1]

実行結果がどういう意味を表すかわかりませんが、、、、とりあえず無事実行はできているみたいです。

ファイルに出力したい場合は、Imgcodecs.imwrite が使えるみたいです。上のサンプルだとなんのことやらわからん画像になりますが。。。

Imgcodecs.imwrite("test.jpg", mat);


4. サンプルの実行2

せっかくなので、もうひとつ「画像を 90 度回転させる」サンプルを実行してみます。全然意味わかってないですが、以下の感じでできるみたいです。

package test;

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;

public class RotateTest {
  public static void main(String[] args) {
    System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
    new RotateTest().test();
  }

  public void test() {
    Mat image = Imgcodecs.imread("ThumbsUp.jpg");
    Core.transpose(image, image);
    Core.flip(image, image, 1);
    Imgcodecs.imwrite("ThumbsUp_output.jpg", image);
  }
}

* 参考
・jmvo.se - Rotate images with OpenCV
http://jmvo.se/rotate-images-with-opencv/

※ 画像は Duke くんで・・・

Duke Images
https://duke.kenai.com/


OpenCV 3.0.0 で Java ってなんか情報少ない印象です。
※ というか当たり前かもですが画像処理の知識が結構必要になりそうです・・・

まぁひとまず、触りはじめというところで、今回はこれぐらいとしておきます。

[ 環境情報 ]
Windows 7 SP1
OpenCV 3.0.0
Java SE 8 Update 25