Corredor

ウェブ、プログラミングの勉強メモ。

MacOS に OpenCV をインストールし JAR ファイルを生成する

MacOS で OpenCV を使った Java 製のアプリを作りたい。そこで、OpenCV をインストールし、Java アプリで使用するための JAR ファイルを生成するところまでやってみる。

JDK をインストールする

OpenCV に JAR ファイルを生成してもらうには、予め Java (JDK) をインストールしておく必要があるみたい。

少しバージョンが古いが、Oracle から JDK 1.8.0-65 をダウンロードし、インストールしておいた。

環境変数 JAVA_HOME が設定された状態にすること。

Homebrew で依存パッケージをインストールする

OpenCV のビルド時に必要なので以下をインストールしておく。

$ brew install cmake ant

OpenCV をダウンロードしビルドする

続いて、OpenCV をダウンロードし、ビルドしていく。今回は OpenCV の v3.2.0 をインストールしたいので、そのバージョンを指定してインストールする。

# GitHub から OpenCV をダウンロードする
$ git clone https://github.com/ar90n/opencv.git
$ cd opencv/

# OpenCV v3.2.0 をインストールするため、バージョン別のタグをチェックアウトする
$ git checkout tag refs/tag/3.2.0

# ビルド成果物を置くためのディレクトリを作る
$ mkdir build
$ cd build/

# build/ ディレクトリ配下に移動したら、OpenCV をビルドする。末尾の「..」は「../」の意味
$ cmake -DCMAKE_BUILD_TYPE=RELEASE -DMAKE_INSTALL_PREFIX=/usr/local -DBUILD_TESTS=OFF -DWITH_FFMPEG=OFF -DBUILD_SHARED_LIBS=off ..

# 続いて make する。-j オプションは CPU コア数を指定すると並列処理できるというモノ。ココでは8コア CPU のマシンだったので -j8 とした
make -j8

このようにすると、以下のファイルが生成された。

  • ./bin/opencv-320.jar
    • ./bin/opencv-320.jar.dephelper とやらも生成されたが、コチラは特に使わなさそう
  • ./lib/libopencv_java320.dylib

Linux 環境で同様に OpenCV をインストールした時とちょっと違ったので、メモメモ。

  • Linux では、cmake 実行時に -DBUILD_SHARED_LIBS=off を追加していた。このオプションで静的ライブラリが生成できるようだが、よく分かっていない
  • make の後に sudo make install は実行しなくて良いみたい

Java (Gradle) プロジェクトに組み込んでみる

詳細は割愛するが、Gradle でプロジェクトを作り、以下のように設定した。

  • opencv-320.jar をプロジェクトの libs/ 配下に置いて、クラスパスに含めた
  • 実行時に export _JAVA_OPTIONS='-Dfile.encoding=UTF-8 -Djava.library.path=/PATH/TO/opencv/build/lib' のように書き libopencv_java320.dylib を読み込むようにしておく
  • アプリ内で OpenCV ライブラリを読み込むには、
    • import org.opencv.core.Core; でインポートし、
    • System.loadLibrary(Core.NATIVE_LIBRARY_NAME); でライブラリを読み込むようにした

ココまでいくと、./gradlew run で Java アプリが起動し、中で OpenCV の JAR ライブラリが使えるようになった。