在linux中为OpenCV构建Java包



当我执行cmake命令时,"待构建"部分没有显示为java,这可能是什么原因?我在我的机器上安装了java,而

cmake -D CMAKE_BUILD_TYPE=Release -D BUILD_SHARED_LIBS=OFF -DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-master/modules/ ..
To be built:
core flann imgproc ml photo reg surface_matching video dnn fuzzy
imgcodecs shape videoio highgui objdetect plot superres ts xobjdetect
xphoto bgsegm bioinspired dpm face features2d line_descriptor saliency
text calib3d ccalib datasets rgbd stereo structured_light tracking
videostab xfeatures2d ximgproc aruco optflow stitching python2

Java版本

java version "1.8.0_74"
Java(TM) SE Runtime Environment (build 1.8.0_74-b02)
Java HotSpot(TM) 64-Bit Server VM (build 25.74-b02, mixed mode)

环境变量也正确设置:

echo $JAVA_HOME
/usr/lib/jvm/java-8-oracle/jre/bin/java

参考文献:http://docs.opencv.org/3.1.0/d7/d9f/tutorial_linux_install.html#gsc.tab=0

解决方案:提取JDK到/usr/lib/jvm/jdk1.8.0_77/,在/etc/environment~/.profile中设置环境变量。

JAVA_HOME="/usr/lib/jvm/jdk1.8.0_77/"
JRE_HOME="/usr/lib/jvm/jdk1.8.0_77/jre/"

将java和javac添加到/usr/bin

sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jdk1.8.0_77/bin/java" 1000
sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/jdk1.8.0_77/bin/javac" 1000

确保它们当前已被选中:

sudo update-alternatives --config java
sudo update-alternatives --config javac

在文件/usr/share/cmake-3.2/Modules/FindJNI.cmake中的部分JAVA_AWT_LIBRARY_DIRECTORIES包括

/usr/lib/jvm/jdk1.8.0_77/jre/lib/{libarch}

并且在部分CCD_ 6中包括

/usr/lib/jvm/jdk1.8.0_77/include

安装"ant"并检查/usr/bin/ant -version是否没有说明JAVA_HOME位于错误的路径或其他什么位置。最后,cmake现在应该能够编译java的库了。

谢谢你,丹。

附录

要用java编译OpenCv的额外模块,请访问首选模块目录中的CMakeList.txt,并在以下行中添加"java":

ocv_define_module(face opencv_core opencv_imgproc opencv_objdetect WRAP python java)

取消设置BUILD_ARED_LIBS、BUILD_XAMPLES、BUILD_TESTS、BULID_PERF_TESTS标志,并将OPENCV_EXTRA_MODULES_PATH设置为路径:opencv_contrib/modules/

最新更新