Ubuntu 18.04 编译 OpenCV4.30,并在 Java 下调用

注:在网络上类似的文章很多,事实上本人在编译 OpenCV 时也参考了不少此类文章,不过几乎没有能够很好地解决本人所遇到的问题,于是这篇文章是着重记录这些难点。

一、Java 环境的检测与编译

-- Could NOT find JNI (missing: JAVA_INCLUDE_PATH JAVA_INCLUDE_PATH2 JAVA_AWT_INCLUDE_PATH) 
-- VTK is not found. Please set -DVTK_DIR in CMake to VTK build directory, or to VTK install subdirectory with VTKConfig.cmake file

--     To be built:                 aruco bgsegm bioinspired calib3d ccalib core datasets dnn dnn_objdetect dnn_superres dpm face features2d flann freetype fuzzy gapi hfs highgui img_hash imgcodecs imgproc intensity_transform line_descriptor ml objdetect optflow phase_unwrapping photo plot python3 quality rapid reg rgbd saliency shape stereo stitching structured_light superres surface_matching text tracking ts video videoio videostab xfeatures2d ximgproc xobjdetect xphoto

--   Java:                          
--     ant:                         /usr/bin/ant (ver 1.10.5)
--     JNI:                         NO
--     Java wrappers:               NO
--     Java tests:                  NO

上面这些错误,都是说明没有自动检测到 Java 环境,如果您确实已经 sudo apt insta ant ,而且执行 java -version 也正常显示相应版本信息的话,也试过执行 export JAVA_HOME=/usr/lib/jdk/jdk-11.0.7+10(注:以你的 JDK 目录为准) 之类的环境命令,那么可能就是自己的当前帐号的权限问题,可以这样:

sudo su

切换为 root ,然后执行 make -j8、make install  这些编译安装命令。

二、linux 环境下需要的是 SO文件

与 window 环境不同,window 会自动解压出 Jar 文件与 X64 、 X86 两个目录;

在Linux 环境下需要找到 libopencv_java430.so 这个文件的目录,作为 opencv-430.jar 的“Native Library location”路径。

 

import org.opencv.core.Core;
import org.opencv.core.CvType;
import org.opencv.core.Mat;

public class Test {

    public static void main(String[] args) {
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        Mat m  = Mat.eye(3, 3, CvType.CV_8UC1);
        System.out.println("m = " + m.dump()); 

        System.out.println(System.getProperty("java.library.path"));  //查看所配置的路径
    }

}

 

 

你可能感兴趣的:(Java)