gpt4 book ai didi

java - 如何使用 Java 在 CascadeClassifier 中设置裁剪大小

转载 作者:太空宇宙 更新时间:2023-11-03 23:09:13 27 4
gpt4 key购买 nike

public BufferedImage detectAndDisplay(BufferedImage img, CascadeClassifier faceCascade) {
Mat frameGray = new Mat();
BufferedImage imgout = null;

Mat image = ImagePreProcessing.bufferedImageToMat(img);

// -- Detect faces
MatOfRect faces = new MatOfRect();
faceCascade.detectMultiScale(image, faces);

List<Rect> listOfFaces = faces.toList();
for (Rect face : listOfFaces) {
Point center = new Point(face.x + face.width / 2, face.y + face.height / 2);
Imgproc.ellipse(image, center, new Size(face.width / 2, face.height / 2), 0, 0, 360,
new Scalar(255, 0, 255), 3);

Mat faceROI = image.submat(face);
imgout = ImagePreProcessing.Mat2BufferedImage(faceROI);
System.out.println("OpenCV: " +center);

}
return imgout;
}

我有那个代码..但我不知道设置裁剪输出图像的代码在哪里。我想要带有圆形模板的原始版本的图片..不要被裁剪请给我建议:)

输入:input

输出:output

最佳答案

在您的代码中,您返回了原始图像的裁剪图像,因此如果您想要原始图像,请绘制圆并将其转换为 BufferedImage 并返回。

for (Rect face : listOfFaces) {
Point center = new Point(face.x + face.width / 2, face.y + face.height / 2);
Imgproc.ellipse(image, center, new Size(face.width / 2, face.height / 2), 0, 0, 360,
new Scalar(255, 0, 255), 3);

// dot not crop!!!
/*Mat faceROI = image.submat(face);
imgout = ImagePreProcessing.Mat2BufferedImage(faceROI);*/

System.out.println("OpenCV: " +center);
imgout = ImagePreProcessing.Mat2BufferedImage(image);

}

关于java - 如何使用 Java 在 CascadeClassifier 中设置裁剪大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53239100/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com