使用Java开发应用

OpenCV 源码安装方式在cmake生成配置阶段会自动检测系统是否安装了JDK和ANT,若存在默认进行编译。

1环境准备

下载并安装JDK和ANT

export JAVA_HOME=/opt/jdk1.8.0_111
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export ANT_HOME=/opt/apache-ant-1.9.7
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$ANT_HOME/bin

2编译安装

请参照对应平台的源码安装章节,在cmake配置阶段,确认有以下配置项。

BUILD_SHARED_LIBS=OFF

在输出结果中,确认有以下内容。

  Java:
    ant:                         /path/to/apache-ant/bin/ant (ver 1.9.7)
    JNI:                         /path/to/jdk1.8.0_111/include
    Java wrappers:               NO
    Java tests:                  NO

3编写示例程序

打开Eclipse编辑器,选择对应的JDK,引入opencv-320.jar,新建测试类。

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

class SimpleSample {

    static {
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
    }

    public static void main(String[] args) {
        System.out.println("Welcome to OpenCV " + Core.VERSION);
        Mat m = new Mat(5, 10, CvType.CV_8UC1, new Scalar(0));
        System.out.println("OpenCV Mat: " + m);
        Mat mr1 = m.row(1);
        mr1.setTo(new Scalar(1));
        Mat mc5 = m.col(5);
        mc5.setTo(new Scalar(5));
        System.out.println("OpenCV Mat data:\n" + m.dump());
    }

}

4启用更多模块

在贡献库中,某些模块默认没有添加Java的WRAP,若有需要可以手动添加,以人脸识别模块为例。

  • 进入贡献库的人脸识别模块
  • cd /path/to/opencv_contrib/modules/face
    
  • 编辑CMakeLists.txt文件,在WRAP后添加java
  • set(the_description "Face recognition etc")
    ocv_define_module(face opencv_core opencv_imgproc opencv_objdetect WRAP python java)
    # NOTE: objdetect module is needed for one of the samples
    
  • 参照对应源码安装章节进行编译配置
  • 编写测试代码
  • import org.opencv.face.*;
    FaceRecognizer fr = Face.createLBPHFaceRecognizer();
    

results matching ""

    No results matching ""