OpenCV 3.1 eclipseでJavaでじゃばじゃば

OpenCV 3.1 eclipseでJavaでじゃばじゃば
         

この記事は1年以上前に更新されたものです。内容が古い可能性がありますのでご注意ください。

画像加工のライブラリ

OpenCV(Open Source Computer Vision Library)を使用して画像加工を行ってみようと思い調べてみました。

C++、Python、Javaに対応と言う事で、この中である程度知識があるのはJavaのみ。
(画像加工の知識は0)

C++、Pythonはある程度の情報量がありますが、Javaは明らかにGoogle検索結果が少ない。
Ver2.xより、Ver3.xはさらに減る感じ。

自分の備忘録が強いですが、参考になると幸いです。

参考にさせていただいたサイト

開発環境

JDK(環境変数設定)とeclipseはインストール済みとして作業します。
Javaの開発環境が存在しない場合は、他のサイトを参考のうえ構築してください。

Java(JDK)

C:\>javac -version
javac 1.8.0_60

eclipse

  • Version: Mars.1 Release (4.5.1)

OpenCV

  • Version: 3.1 for Windows

環境構築

フォルダ構成等は適宜読み替えてください。
今回はOpenCVを【C:\opencv】に解凍します。

OpenCVの準備

  1. OpenCV公式ダウンロードよりOpenCV for Windows(2015-12-21)を保存します。(サイズは110MBぐらい)
    ダウンロードした「opencv-3.1.0.exe」を実行し、解凍先を指定します。
    01
  2. eclipseを起動。メニューのウィンドウ→設定をクリック(eclipseは日本語化しています)
    Java - Eclipse011
  3. 設定ウィンドウのJava→ビルド・パス→ユーザー・ライブラリ→新規ボタン押下
    ユーザーライブラリ名を任意に設定し、OKボタン押下
    スクロールキャプチャ016
  4. 追加したユーザー・ライブラリを選択し、外部Jar追加ボタン押下
    解凍先フォルダにあるjarを追加します。「C:\opencv\build\java\opencv-310.jar」
    JAR の選択019
  5. ネイティブライブラリの追加
    追加したjarのツリーを展開し、ネイティブ・ライブラリのロケーションを選択→編集ボタン押下
    設定021
  6. フォルダーの構成ウィンドウの、外部フォルダボタン押下し
    解凍先の「C:\opencv\build\java\x64」を指定し、OKボタン押下。
    (32bitの場合はx86になるのかな?)
    ネイティブ・ライブラリー・フォ022
    設定023

OpenCVを使う準備はここまでです。
実際に利用することが出来るか、サンプルを動かしてみましょう。

サンプル作成

さっそくプロジェクトを作成しましょう。
注意点は先程追加したユーザー・ライブラリの追加を行う事だけ。

プロジェクト作成

  1. ファイル→新規→Javaプロジェクト
    Java - Eclipse024
  2. プロジェクト名を入力し、次へボタン押下
    新規 Java プロジェクト026
  3. ライブラリータブ→ライブラリーの追加ボタン押下
    新規 Java プロジェクト028
  4. ユーザー・ライブラリーを選択し、次へ
    ライブラリーの追加029
  5. 作成したOpenCVライブラリを選択し、完了ボタン押下
    ライブラリーの追加030
  6. 追加されていることを確認し、完了
    新規 Java プロジェクト031

クラス作成

参考にさせていただいた「OpenCV を使ってみる ( Windows + Java )」に公開していただいてるソースを、ほぼそのままコピペ実行・・・!

ファイル名:Hello.java

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

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() );

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

OpenCVライブラリが正常に設定されていると、以下の標準出力に成功するはずです。

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

また14行目にて、ファイルを保存しています。
プロジェクトルートに[test.jpg]ファイルが存在すると思いますが、小さな画像ができていることが確認できます。
サンプルデータの為、画像自体は意味不明です。

OpenCVを利用できることが確認できましたので、環境構築の完了です。
お疲れさまでした。
次は顔認識を実装していきます。