java - 如何使用OpenCV和Java来挽回面子和识别?

标签 java opencv javacv

我是 OpenCV 的新手。我能够从网络摄像头检测到人脸。我有点困惑如何保存检测到的人脸,如果那个人再次出现在镜头前如何保存和识别。

检测代码

private void detectAndDisplay(Mat frame)
{
    MatOfRect faces = new MatOfRect();
    Mat grayFrame = new Mat();

    // convert the frame in gray scale
    Imgproc.cvtColor(frame, grayFrame, Imgproc.COLOR_BGR2GRAY);
    // equalize the frame histogram to improve the result
    Imgproc.equalizeHist(grayFrame, grayFrame);

    // compute minimum face size (20% of the frame height, in our case)
    if (this.absoluteFaceSize == 0)
    {
        int height = grayFrame.rows();
        if (Math.round(height * 0.2f) > 0)
        {
            this.absoluteFaceSize = Math.round(height * 0.2f);
        }
    }

    // detect faces
    this.faceCascade.detectMultiScale(grayFrame, faces, 1.1, 2, 0 | Objdetect.CASCADE_SCALE_IMAGE,
            new Size(this.absoluteFaceSize, this.absoluteFaceSize), new Size());

    // each rectangle in faces is a face: draw them!
    Rect[] facesArray = faces.toArray();
    for (int i = 0; i < facesArray.length; i++)
        Imgproc.rectangle(frame, facesArray[i].tl(), facesArray[i].br(), new Scalar(0, 255, 0), 3);

}

最佳答案

如果你想保存检测到的人脸图像,也许你可以试试这样

for (int i = 0; i < facesArray.length; i++)
{   
     Imgproc.rectangle(frame, facesArray[i].tl(), facesArray[i].br(), new Scalar(0, 255, 0), 3);
     Rect rect(facesArray[i].tl().x, facesArray[i].tl().y, facesArray[i].br().x - facesArray[i].tl().x, facesArray[i].br().y - facesArray[i].tl().y);
     Mat cropFace = frame(rect);
     imwrite("./face"+i+".jpg", cropFace);
}

关于java - 如何使用OpenCV和Java来挽回面子和识别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49248943/

相关文章:

java - 打开新 JFrame 时如何禁用主 JFrame

opencv - 使用 visual studio 2013 时在 Opencv 2.4.10 中加载文件时出错

Android Opencv补色计算

java - cv AbsDiff 的示例?

image - 如何在 OpenCV python 或 JavaCV 中比较两个图像并检查两个图像是否具有相同的对象

Java MVC 和 Rest 服务器以及 JavaScript 重客户端

java - 如何更改 CDH 使用的 Java 版本

image - 将图像的x和y坐标转换为行主要的线性索引

image - 使用 javacv 在另一个图像中查找图像

Java Scanner 从字符串中获取数字