package pool.tests; import java.awt.Color; import java.awt.Graphics2D; import org.opencv.core.Mat; import org.opencv.core.MatOfRect; import org.opencv.core.Rect; import org.opencv.highgui.VideoCapture; import org.opencv.objdetect.CascadeClassifier; import pool.utils.CVLoader; import pool.utils.ImgWindow; public class FaceDetectionTest { public static void main (String[] args) { CVLoader.load(); VideoCapture video = new VideoCapture(0); CascadeClassifier classifier = new CascadeClassifier("data/haarcascade_frontalface_alt.xml"); ImgWindow window = ImgWindow.newWindow(); if (video.isOpened()) { Mat mat = new Mat(); while (!window.closed) { loop(classifier, mat, window, video); } } video.release(); } public static void loop (CascadeClassifier classifier, Mat mat, ImgWindow window, VideoCapture video) { video.read(mat); System.out.println(mat); if (!mat.empty()) { MatOfRect rects = new MatOfRect(); long start = System.nanoTime(); classifier.detectMultiScale(mat, rects); System.out.println((System.nanoTime()-start)/1000000000.0); window.setImage(mat); Graphics2D g = window.begin(); g.setColor(Color.RED); for(Rect r: rects.toArray()) { g.drawRect(r.x, r.y, r.width, r.height); } window.end(); } } }