如何识别已经检测并保存的面部是本地系统作为.jpg?

时间:2018-03-19 06:52:33

标签: java opencv face-recognition

我使用OpenCV,JavaFX来检测并保存本地文件夹中的人脸图像。现在我想识别面部,如果已经保存在本地系统中。我需要一些指导和一些示例代码或链接,以便我可以进一步。

保存面部

Rect rectCrop = null;
    int i =1;
    for (Rect rect : facesArray) {
        Imgproc.rectangle(frame, new Point(rect.x, rect.y), new Point(rect.x + rect.width, rect.y + rect.height),
                new Scalar(0, 255, 0));
        rectCrop = new Rect(rect.x, rect.y, rect.width, rect.height);

        Mat image_roi = new Mat(frame,rectCrop);
         Imgcodecs.imwrite("./face"+ i +".jpg",image_roi);
         i++;
    }

enter image description here

1 个答案:

答案 0 :(得分:1)

使用openCV 3.4尝试以下代码

static Mat processFace(Net net, Mat img) {
Mat blob = Dnn.blobFromImage(img, 1./255, new Size(96,96), Scalar.all(0), 
true, false);
net.setInput(blob);
return net.forward().clone();
}

  public static void main(String[] args) {
// Load the native library.
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

Net net  = Dnn.readNetFromTorch("openface.nn4.small2.v1.t7");

Mat img1 = Imgcodecs.imread("../img/face1.png");
Mat img2 = Imgcodecs.imread("../img/face2.jpg");

Mat feature1 = processFace(net, img1);
Mat feature2 = processFace(net, img2);
double distance = Core.norm(feature1, feature2);
System.out.println("distance: " + distance);
}