1.首先下载OpenCV2.4.9,下载的时候,选择windows版的。然后安装 (英文原版程序可以在这里找到,注意修改版本号和文件路径:opencv.org)
2.其实安装的过程就是解压的过程,并没有什么安装向导之类的,安装完成后,我们最关心的是这个目录:opencv\build\java 如下图所示
3,建立项目 JavaOpenCv310
3.导入java包
4.设置项目的native库,即opencv_java310.dll所在的路径
5.项目目录结构如下:
我没有采用原版中直接按照类的包格式进行资源的引用,而是创建了Data与Result两个目录用来存放原与结果,这样输出更方便一些。
lbpcascade_frontalface.xml可以从OpenCV库的解压路径下sources\data\lbpcascades找到。
6.编写DetectFaceDemo.java,代码如下:
package com.detal.opencv;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.opencv.core.Mat;
import org.opencv.core.MatOfRect;
import org.opencv.core.Point;
import org.opencv.core.Rect;
import org.opencv.core.Scalar;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
import org.opencv.objdetect.CascadeClassifier;
public class OpenCv {
public static void main(String[] args) {
run();
}
public static void run(){
SimpleDateFormat f = new SimpleDateFormat("yyyyMMddHHmmss");
System.loadLibrary("opencv_java310");
CascadeClassifier faceDetector = new CascadeClassifier("./Data/lbpcascade_frontalface.xml");
Mat image = Imgcodecs.imread("./Data/timg.jpg");
MatOfRect faceDetections = new MatOfRect();
faceDetector.detectMultiScale(image, faceDetections);
System.out.println(String.format("Detected %s faces",faceDetections.toArray().length));
for (Rect rect : faceDetections.toArray()) {
Imgproc.rectangle(image, new Point(rect.x, rect.y), new Point(rect.x
+ rect.width, rect.y + rect.height), new Scalar(0, 255, 0));
}
String filename = "./Result/"+f.format(new Date())+".png";
System.out.println(String.format("Writing %s", filename));
Imgcodecs.imwrite(filename, image);
}
}
7运行结果: