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
でやってみたが、その場合にはネイティブライブラリーをうまく探しだしてくれなかった
おわり