JNI JavaからCppを実行する
http://masabloggers.blogspot.jp/search/label/JNI
※参考ページ
http://stbr.no-ip.org/daizu/2009/11/jni-ant.html
この時に作成したbuild.xmlを改良して、OpenCVを使ったCppのコードを
コンパイル出来るようにするぜ。
後、うまくOpenCVの実行ファイルを使えるようにするぜ。
というのが目標です。
Cppコードのコンパイル
まずは ANT build.xml でOpenCVを使ったコンパイルが出来るようにしましょう。
今回は、OpenCV2.4.6 を使います。
OpenCVダウンロード
http://masabloggers.blogspot.jp/search/label/JNI
以下に展開した前提で進めます。
/opt/opencv-2.4.6gcc のコンパイルは、ノード cc で実行します。
OpenCVを使用したコードで必要なのは、主に以下だと思います。
- ヘッダファイルのincludeディレクトリ
- リンクするライブラリ
- includepath
- libset
以下のように書けます。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<cc link="shared" outfile="/root/workspace/jni/dist/HelloWorldJNI" objdir="${h_dir}"> | |
<includepath location="${env.JAVA_HOME}/include" /> | |
<includepath location="${env.JAVA_HOME}/include/linux" /> | |
<includepath location="/opt/opencv-2.4.6/include/opencv" /> | |
<includepath location="/opt/opencv-2.4.6/include/opencv2" /> | |
<fileset dir="${h_dir}" includes="HelloWorldJNI.cpp" /> | |
<libset dir="/opt/opencv-2.4.6/lib" libs="opencv_features2d,opencv_highgui,opencv_core,opencv_imgproc,opencv_objdetect,opencv_contrib,opencv_flann" /> | |
<libset libs="stdc++" /> | |
</cc> |
注意したいのは、ライブラリを指定する時に、先頭の lib と 拡張子の .so を除いて記述するところです。libsには私が必要だったライブラリしか指定していないので、必要に合わせて変更します。
OpenCVのインストール時、オプションを指定しないとすべて /usr/local/ に配置されるので、ディレクトリを指定したい場合は注意。
0 件のコメント:
コメントを投稿