使用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();