mirror of
https://github.com/geekwenjie/SmartJavaAI.git
synced 2026-09-13 05:08:55 +00:00
1、人脸模块:人脸查询支持 向量数据库Milvus 和 SQLite
2、人脸模块:FaceNet人脸模型也支持人脸注册,查询等功能 3、人脸模块:Seetaface6 自动下载人脸库 4、人脸模块:Seetaface6解决依赖库重复下载问题 5、人脸模块:支持手动加载人脸库 6、人脸模块:人脸识别相关功能支持更多参数
This commit is contained in:
@@ -6,9 +6,10 @@
|
||||
<parent>
|
||||
<groupId>cn.smartjavaai</groupId>
|
||||
<artifactId>smartjavaai-parent</artifactId>
|
||||
<version>1.0.15</version>
|
||||
<version>1.0.16</version>
|
||||
</parent>
|
||||
|
||||
<name>smartjavaai-common</name>
|
||||
<artifactId>smartjavaai-common</artifactId>
|
||||
<description>SmartJavaAI</description>
|
||||
<url>https://github.com/geekwenjie/SmartJavaAI</url>
|
||||
|
||||
@@ -14,6 +14,7 @@ public class DetectionResponse {
|
||||
|
||||
private List<DetectionInfo> detectionInfoList;
|
||||
|
||||
|
||||
public DetectionResponse() {
|
||||
}
|
||||
|
||||
|
||||
@@ -28,6 +28,16 @@ public class FaceInfo {
|
||||
*/
|
||||
private LivenessStatus livenessStatus;
|
||||
|
||||
/**
|
||||
* 人脸查询结果
|
||||
*/
|
||||
private List<FaceSearchResult> faceSearchResults;
|
||||
|
||||
/**
|
||||
* 人脸特征
|
||||
*/
|
||||
private float[] feature;
|
||||
|
||||
public FaceInfo() {
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
package cn.smartjavaai.common.entity;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 人脸向量搜索结果
|
||||
* @author dwj
|
||||
*/
|
||||
@Data
|
||||
public class FaceSearchResult {
|
||||
|
||||
/**
|
||||
* 向量ID
|
||||
*/
|
||||
private String id;
|
||||
|
||||
/**
|
||||
* 相似度分数
|
||||
*/
|
||||
private float similarity;
|
||||
|
||||
/**
|
||||
* 元数据
|
||||
*/
|
||||
private String metadata;
|
||||
|
||||
/**
|
||||
* 构造函数
|
||||
* @param id 向量ID
|
||||
* @param similarity 相似度分数
|
||||
* @param metadata 元数据
|
||||
*/
|
||||
public FaceSearchResult(String id, float similarity, String metadata) {
|
||||
this.id = id;
|
||||
this.similarity = similarity;
|
||||
this.metadata = metadata;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,84 @@
|
||||
package cn.smartjavaai.common.entity;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* 通用响应封装类,用于统一接口返回结构
|
||||
* @author dwj
|
||||
* @date 2025/6/4
|
||||
*/
|
||||
@Data
|
||||
public class R<T> {
|
||||
|
||||
private Integer code;
|
||||
private String message;
|
||||
private T data;
|
||||
|
||||
|
||||
|
||||
public static <T> R<T> ok(T data) {
|
||||
R<T> r = new R<>();
|
||||
r.code = 0;
|
||||
r.message = "成功";
|
||||
r.data = data;
|
||||
return r;
|
||||
}
|
||||
|
||||
public static <T> R<T> fail(Integer code, String message) {
|
||||
R<T> r = new R<>();
|
||||
r.code = code;
|
||||
r.message = message;
|
||||
r.data = null;
|
||||
return r;
|
||||
}
|
||||
|
||||
public static <T> R<T> fail(Status status) {
|
||||
R<T> r = new R<>();
|
||||
r.code = status.code;
|
||||
r.message = status.message;
|
||||
r.data = null;
|
||||
return r;
|
||||
}
|
||||
|
||||
|
||||
public enum Status {
|
||||
SUCCESS(0, "成功"),
|
||||
INVALID_IMAGE(1, "图像无效"),
|
||||
FILE_NOT_FOUND(2, "图像文件不存在"),
|
||||
NO_FACE_DETECTED(3, "未检测到人脸"),
|
||||
Unknown(-1, "未知错误");
|
||||
|
||||
private final int code;
|
||||
private final String message;
|
||||
|
||||
|
||||
|
||||
Status(int code, String message) {
|
||||
this.code = code;
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
public int getCode() {
|
||||
return code;
|
||||
}
|
||||
|
||||
public String getMessage() {
|
||||
return message;
|
||||
}
|
||||
|
||||
public static Status valueOf(int val) {
|
||||
Optional<Status> search = Arrays.stream(values()).filter((status) -> {
|
||||
return status.code == val;
|
||||
}).findFirst();
|
||||
return (Status)search.orElse(Unknown);
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isSuccess() {
|
||||
return code != null && code.equals(Status.SUCCESS.code);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user