我使用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++;
}
答案 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);
}