Files
AI-Check-Test/jnpf-ftb/jnpf-ftb-biz/src/main/java/jnpf/util/SeetaFaceUtil.java
dongzi 3cba3bb74e
Some checks failed
API接口参数变更检测 / api-param-check (push) Has been cancelled
commit
2026-06-05 16:18:40 +08:00

138 lines
5.3 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//package jnpf.util;
//
//import com.seeta.sdk.*;
//import com.seeta.sdk.util.SeetafaceUtil;
//import jnpf.exception.HandleException;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.web.multipart.MultipartFile;
//
//import javax.imageio.ImageIO;
//import java.awt.image.BufferedImage;
//import java.io.InputStream;
//import java.net.HttpURLConnection;
//import java.net.URL;
//
///**
// * 人脸识别工具类
// *
// * @author yanwenfu
// * @create 2025-04-08
// */
//@Slf4j
//public class SeetaFaceUtil {
//
// //人脸检测器
// private static final FaceDetector detector;
// //关键点定位器 5点
// private static final FaceLandmarker faceLandmarker;
// //人脸向量特征提取和对比器
// private static final FaceRecognizer faceRecognizer;
// static {
// try {
// detector = new FaceDetector(new SeetaModelSetting(SeetaConstant.face_detector, SeetaDevice.SEETA_DEVICE_AUTO));
// faceLandmarker = new FaceLandmarker(new SeetaModelSetting(SeetaConstant.face_landmarker_pts5, SeetaDevice.SEETA_DEVICE_AUTO));
// faceRecognizer = new FaceRecognizer(new SeetaModelSetting(SeetaConstant.face_recognizer, SeetaDevice.SEETA_DEVICE_AUTO));
// } catch (Exception e) {
// throw new RuntimeException(e);
// }
// }
//
// // 资源释放方法
// public static synchronized void releaseModels() {
// try {
// if (detector != null) {
// detector.dispose(); // 实际方法名以SDK为准
// }
// if (faceLandmarker != null) {
// faceLandmarker.dispose();
// }
// if (faceRecognizer != null) {
// faceRecognizer.dispose();
// }
// } catch (Exception e) {
// log.error("模型资源释放异常", e);
// }
// }
//
// /**
// * 获取照片特征(参数必须传递一个)
// * @param file 文件
// * @param url 远程路径
// * @return float[]
// */
// public static float[] analyzeEcognizer(MultipartFile file, String url) throws HandleException {
// float[] features1 = null;
// try {
// //第1张照片
// SeetaImageData image1;
// if (null != file) {
// image1 = SeetafaceUtil.toSeetaImageData(imageAsBufferedImage(file));
// } else {
// image1 = SeetafaceUtil.toSeetaImageData(downloadImageAsBufferedImage(url));
// }
// //第一张照片人脸识别
// SeetaRect[] detects1 = detector.Detect(image1);
// if (null == detects1 || detects1.length == 0) {
// throw new HandleException("未识别到人脸,请重试");
// }
// SeetaPointF[] pointFS1 = new SeetaPointF[faceRecognizer.GetExtractFeatureSize()];
// int[] masks1 = new int[faceRecognizer.GetExtractFeatureSize()];
// //第一张图片,第一个人脸关键点定位,有多个人脸的情况下,只取第一个人脸(这是测试,先这样写)
// faceLandmarker.mark(image1, detects1[0], pointFS1, masks1);
// //第一张图片第一个人脸向量特征提取features1
// features1 = new float[faceRecognizer.GetExtractFeatureSize()];
// faceRecognizer.Extract(image1, pointFS1, features1);
// } catch (Exception e) {
// throw new HandleException(e.getMessage());
// }
// return features1;
// }
//
// public static Boolean compareEigenvalue(float[] features1, float[] features2) {
// try {
// //人脸向量特征提取和对比器
// // FaceRecognizer faceRecognizer = new FaceRecognizer(new SeetaModelSetting(SeetaConstant.face_recognizer, SeetaDevice.SEETA_DEVICE_AUTO));
// if (features1 != null && features2 != null ) {
// float calculateSimilarity = faceRecognizer.CalculateSimilarity(features1, features2);
//
// if (calculateSimilarity > 0.75) {
// return true;
// }
// }
// } catch (Exception e) {
// log.error(e.getMessage());
// return false;
// }
// return false;
// }
//
// public static BufferedImage imageAsBufferedImage(MultipartFile file) throws Exception {
// // 获取输入流
// InputStream inputStream = file.getInputStream();
// // 使用ImageIO读取InputStream到BufferedImage
// BufferedImage bufferedImage = ImageIO.read(inputStream);
// // 关闭输入流
// inputStream.close();
// return bufferedImage;
// }
//
// public static BufferedImage downloadImageAsBufferedImage(String imageUrl) throws Exception {
// // 创建URL对象
// URL url = new URL(imageUrl);
// // 打开连接
// HttpURLConnection connection = (HttpURLConnection) url.openConnection();
// connection.setRequestMethod("GET");
// // 连接到资源
// connection.connect();
// // 获取输入流
// InputStream inputStream = connection.getInputStream();
// // 使用ImageIO读取InputStream到BufferedImage
// BufferedImage bufferedImage = ImageIO.read(inputStream);
// // 关闭输入流
// inputStream.close();
// // 断开连接
// connection.disconnect();
// return bufferedImage;
// }
//}