feat:同步人脸优化
This commit is contained in:
1 parent
3f99e73c44
commit
6f0e3ea37e
8 files changed
+552
-47
No files matched your search
+18
-2
@@ -181,7 +181,7 @@ public class FaceServer {
|
||||
int searchId = faceEntity.getFaceId();
|
||||
FaceEntity oldEntity = copyFaceEntity(faceRegisterInfoMap.get(searchId));
|
||||
try {
|
||||
FaceFeatureInfo oldFeature = getFaceFeature(searchId);
|
||||
FaceFeatureInfo oldFeature = oldEntity == null ? getFaceFeatureQuiet(searchId) : null;
|
||||
if (oldEntity == null && oldFeature != null) {
|
||||
oldEntity = new FaceEntity(searchId, oldFeature.getFeatureData());
|
||||
}
|
||||
@@ -268,6 +268,22 @@ public class FaceServer {
|
||||
return faceFeatureInfo;
|
||||
}
|
||||
|
||||
/**
|
||||
* 探测内存库特征但不记录异常日志。
|
||||
*
|
||||
* <p>标识不存在是增量路径的常见前置状态(新样本 upsert 探测旧特征、孤儿
|
||||
* 重复删除的存在性检查),IllegalArgumentException 属预期分支;批量同步
|
||||
* 数千张全新样本时会逐条抛错刷屏,这里静默返回空。</p>
|
||||
*/
|
||||
private FaceFeatureInfo getFaceFeatureQuiet(int searchId) {
|
||||
if (faceEngine == null) return null;
|
||||
try {
|
||||
return faceEngine.getFaceFeature(searchId);
|
||||
} catch (IllegalArgumentException e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
// 获取人脸数量
|
||||
public synchronized int getTotalFaceCount() {
|
||||
if (faceEngine == null) return -99;
|
||||
@@ -278,7 +294,7 @@ public class FaceServer {
|
||||
public synchronized int removeFace(int searchId) {
|
||||
if (faceEngine == null) return -99;
|
||||
// MQ 和每日快照都可能重复删除同一样本;内存库已不存在时直接按幂等成功处理。
|
||||
if (searchId != -1 && getFaceFeature(searchId) == null) {
|
||||
if (searchId != -1 && getFaceFeatureQuiet(searchId) == null) {
|
||||
faceRegisterInfoMap.remove(searchId);
|
||||
return ErrorInfo.MOK;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user