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 ライブラリが使えるようになった。