Java opencv人脸识别,获取“的坐标”;“边界框”;环绕图像

Java opencv人脸识别,获取“的坐标”;“边界框”;环绕图像,java,opencv,coordinates,Java,Opencv,Coordinates,今天,我在java中尝试一个使用opencv的项目,并且我在遵循代码。我将其修改为使用opencv 3.0.0。基本上,我试图从一个文件夹中获取一组图像,然后在人脸识别找到人脸的地方裁剪这些图像。所以问题是,我似乎无法获得围绕图像()的“边界框”的坐标。我想将图像裁剪到框中,有人知道我在说什么或做什么吗 感谢您的帮助!:)我是一个(非常)初学者程序员。谢谢大家! import java.io.File; import java.io.IOException; import org.opencv.

今天,我在java中尝试一个使用opencv的项目,并且我在遵循代码。我将其修改为使用opencv 3.0.0。基本上,我试图从一个文件夹中获取一组图像,然后在人脸识别找到人脸的地方裁剪这些图像。所以问题是,我似乎无法获得围绕图像()的“边界框”的坐标。我想将图像裁剪到框中,有人知道我在说什么或做什么吗

感谢您的帮助!:)我是一个(非常)初学者程序员。谢谢大家!

import java.io.File;
import java.io.IOException;
import org.opencv.core.Core;
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 hello {
    public static void main(String[] args) throws IOException {
    System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
    System.out.println("\nRunning FaceDetector");

    CascadeClassifier faceDetector = new CascadeClassifier("C:/Users/Family/workspace/detect face/haarcascade_frontalface_alt.xml");

    File folder = new File("C:\\Users\\Family\\Downloads\\Photos");
    File[] listOfFiles = folder.listFiles();

    for (int j = 0; j < listOfFiles.length; j++) {
        System.out.println(listOfFiles[j]);
    }

    for (int i = 0; i < listOfFiles.length-1; i++){
        String picname = listOfFiles[i].toString();

        System.out.println("reading: " + listOfFiles[i]);

        Mat image = Imgcodecs.imread(picname);

        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 = "monkey.png";
        System.out.println(String.format("Writing %s", filename));
        Imgcodecs.imwrite(filename, image);

    }
}
导入java.io.File;
导入java.io.IOException;
导入org.opencv.core.core;
导入org.opencv.core.Mat;
导入org.opencv.core.MatOfRect;
导入org.opencv.core.Point;
导入org.opencv.core.Rect;
导入org.opencv.core.Scalar;
导入org.opencv.imgcodecs.imgcodecs;
导入org.opencv.imgproc.imgproc;
导入org.opencv.objdetect.CascadeClassifier;
公共课你好{
公共静态void main(字符串[]args)引发IOException{
System.loadLibrary(Core.NATIVE\u LIBRARY\u NAME);
System.out.println(“\n运行面检测器”);
CascadeClassifier faceDetector=新的CascadeClassifier(“C:/Users/Family/workspace/detect face/haarcascade_frontalface_alt.xml”);
文件夹=新文件(“C:\\Users\\Family\\Downloads\\Photos”);
File[]listOfFiles=folder.listFiles();
对于(int j=0;j
}

试试这个方法

rect.getX(); //for getting x cordinates
rect.getY(); //for getting y cordinates
rect.getWidth(); //for getting width
rect.getHeight(); //for getting height
这张图片对你有帮助

试试这个方法

rect.getX(); //for getting x cordinates
rect.getY(); //for getting y cordinates
rect.getWidth(); //for getting width
rect.getHeight(); //for getting height
这张图片对你有帮助


谢谢!这对我来说基本上解决了这个问题:D我在看了你说的话之后,找到了密码。去吧……一切顺利……别忘了分享你的问题……也别忘了投票选出你最好的答案……小心。。。宽度包括最左边的坐标<代码>x谢谢!这对我来说基本上解决了这个问题:D我在看了你说的话之后,找到了密码。去吧……一切顺利……别忘了分享你的问题……也别忘了投票选出你最好的答案……小心。。。宽度包括最左边的坐标<代码>x