环境:windows
opencv版本4.0
java版本1.8
直接上代码
package mypkg;
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.objdetect.CascadeClassifier;
import org.opencv.videoio.VideoCapture;
import org.opencv.highgui.HighGui;
import org.opencv.imgproc.Imgproc;
public class TestFace {
public static void main(String[] args) {
System.out.println("###start###");
System.load("F:/lee/apps/opencv/build/java/x64/opencv_java400.dll");
testFace();
System.out.println("###end###");
}
private static void testFace() {
VideoCapture vc = new VideoCapture(0);
Mat mat = new Mat();
String winName = "showFrame";
HighGui.namedWindow(winName);
HighGui.resizeWindow(winName, 800, 600);
//
CascadeClassifier faceDetector = new CascadeClassifier("F:/lee/workspace_2/testOpencv4/src/haarcascade_frontalface_default.xml");
//
while(vc.read(mat)){
// 识别并添加
MatOfRect faceDetections = new MatOfRect();
faceDetector.detectMultiScale(mat, faceDetections);
System.out.println(String.format("Detected %s faces", faceDetections.toArray().length));
for (Rect rect : faceDetections.toArray())
{
Imgproc.rectangle(mat, new Point(rect.x, rect.y),
new Point(rect.x + rect.width, rect.y + rect.height), new Scalar(0, 255, 0));
}
// 显示及退出
HighGui.imshow(winName, mat);
// waitkey 必须要,否则无法显示
int key = HighGui.waitKey(1);
System.out.println("key="+key);
if(key == 27){
break;
}
}
HighGui.destroyAllWindows();
//
vc.release();
}
}