请问有人用java实现过opencv的sface的人脸检测功能吗,java中的alignCrop应该怎样使用。
我本地启动报错如下
public static void main(String[] args) {
// 1.初始化opencv
initOpenCV();
// 3.读取图片
Mat imageA = Imgcodecs.imread("C:/Users/y1793/Desktop/1f48e0d3dbb39e3d7e063b321df6c3c.jpg");
Mat imageB = Imgcodecs.imread("C:/Users/y1793/Desktop/1f48e0d3dbb39e3d7e063b321df6c3c.jpg");
// 人脸识别
FaceDetectorYN faceDetectorYN = FaceDetectorYN.create("C:/Users/y1793/Downloads/face_detection_yunet_2022mar.onnx", "", new Size(), score_thresh, nms_thresh, top_k);
Mat faceA = new Mat();
faceDetectorYN.setInputSize(new Size(imageA.width(), imageA.height()));
faceDetectorYN.detect(imageA, faceA);
Mat faceB = new Mat();
faceDetectorYN.setInputSize(new Size(imageB.width(), imageB.height()));
faceDetectorYN.detect(imageB, faceB);
// 人脸预处理
FaceRecognizerSF faceRecognizerSF = FaceRecognizerSF.create("C:/Users/y1793/Downloads/face_recognition_sface_2021dec.onnx", "");
Mat alignFaceA = new Mat();
faceRecognizerSF.alignCrop(imageA, faceA, alignFaceA);
Mat alignFaceB = new Mat();
faceRecognizerSF.alignCrop(imageB, faceB, alignFaceB);
// 人脸特征提取
Mat featureA = new Mat();
faceRecognizerSF.feature(alignFaceA, featureA);
Mat featureB = new Mat();
faceRecognizerSF.feature(alignFaceB, featureB);
// 人脸识别
double match1 = faceRecognizerSF.match(featureA, featureB, FaceRecognizerSF.FR_COSINE);
double match2 = faceRecognizerSF.match(featureA, featureB, FaceRecognizerSF.FR_NORM_L2);
System.out.println(match1);
System.out.println(match2);
}