JavaでOpenCVをごにょごにょやるのに、少し手間取ったのでメモ。
インストールする環境などは次のとおり。
OpenCVのインストール
$ brew install python $ brew install python3
(2) numpyをインストールするためにgccをインストール
$ brew install gcc
numpyがgfortrunに依存していて、gfortrunがgccに吸収されているので、インストールされる。
なお、makeに時間がかかる(1時間くらい)
(3) numpyをインストール
$ brew install numpy --with-python3
(4) opencv3をインストール
$ brew install opencv3 --with-python3 --with-java
Javaでいじる場合には--with-javaをいれておく
Pythonでインストールの確認をするので、次のコマンドをうっておく
$ brew link opencv3 --force
インストール後にpython3を起動してimport cv2をおこなって、エラーが出なければインストール成功
Javaプロジェクト
(1) libopencv_java310.so のファイル名を変更
OpenCVに同梱されているネイティブライブラリーのlibopencv_java310の拡張子がsoになっているので、dyLibに変更する
$ cd /usr/local/Cellar/opencv3/3.1.0_3/share/OpenCV/java $ sudo mv libopencv_java310.so libopencv_java310.dyLib
(2) opencv_310.jarからjavaファイルのみを取り出してサブプロジェクトにする
OpenCVに同梱されているopencv_310.jarにはいっているclassファイルがJava9eaでコンパイルされていて、IntelliJ IDEAでクラスファイルを認識できない。そこでopencv_310.jarからjavaファイルを取り出してサブプロジェクトを作り、メインのほうから依存するようにプロジェクトを構成する。
settings.gradle
include 'opencv'
build.gradle
dependencies {
// サブプロジェクトに依存
compile project(':opencv')
}
// jarからjavaファイルを取り出す
task copySource(type: Copy) {
def jarFile = file('/usr/local/Cellar/opencv3/3.1.0_3/share/OpenCV/java/opencv-310.jar')
from zipTree(jarFile)
exclude '**/*.class'
exclude 'META-INF/*'
}
// サブプロジェクトの設定
project(':opencv') {
apply plugin: 'java'
}
(3) プログラム実行時の起動オプション
ネイティブライブラリーのパスをjava.library.pathに設定して起動する
-Djava.library.path=/usr/local/Cellar/opencv3/3.1.0_3/share/OpenCV/java
System.setPropertyでやってみたが、その場合にはネイティブライブラリーをうまく探しだしてくれなかった
おわり