/
NikolayIvkin
/
tutorials1
Обзор
Документация
Войти
/
NikolayIvkin
/
tutorials1
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
image-processing/src/main/java/com/baeldung/imageprocessing/opencv/FaceDetection.java
56 строк
2 KB
Sam Millington
Added code for open-cv (#8657)
08 фев 2020, 21:18
08 фев 2020, 21:18
9391ed8
Код
Авторство
О чём код?
package com.baeldung.imageprocessing.opencv; import org.opencv.core.Mat; import org.opencv.core.MatOfByte; import org.opencv.core.MatOfRect; import org.opencv.core.Rect; import org.opencv.core.Scalar; import org.opencv.core.Size; import org.opencv.imgcodecs.Imgcodecs; import org.opencv.imgproc.Imgproc; import org.opencv.objdetect.CascadeClassifier; import org.opencv.objdetect.Objdetect; import javafx.scene.image.Image; import java.io.ByteArrayInputStream; public class FaceDetection { public static Mat loadImage(String imagePath) { Imgcodecs imageCodecs = new Imgcodecs(); return imageCodecs.imread(imagePath); } public static void saveImage(Mat imageMatrix, String targetPath) { Imgcodecs imgcodecs = new Imgcodecs(); imgcodecs.imwrite(targetPath, imageMatrix); } public static void detectFace(String sourceImagePath, String targetImagePath) { Mat loadedImage = loadImage(sourceImagePath); MatOfRect facesDetected = new MatOfRect(); CascadeClassifier cascadeClassifier = new CascadeClassifier(); int minFaceSize = Math.round(loadedImage.rows() * 0.1f); cascadeClassifier.load("./src/main/resources/haarcascades/haarcascade_frontalface_alt.xml"); cascadeClassifier.detectMultiScale(loadedImage, facesDetected, 1.1, 3, Objdetect.CASCADE_SCALE_IMAGE, new Size(minFaceSize, minFaceSize), new Size() ); Rect[] facesArray = facesDetected.toArray(); for(Rect face : facesArray) { Imgproc.rectangle(loadedImage, face.tl(), face.br(), new Scalar(0, 0, 255), 3 ); } saveImage(loadedImage, targetImagePath); } public Image mat2Img(Mat mat) { MatOfByte bytes = new MatOfByte(); Imgcodecs.imencode("img", mat, bytes); ByteArrayInputStream inputStream = new ByteArrayInputStream(bytes.toArray()); Image img = new Image(inputStream); return img; } }