|
|
@@ -7,15 +7,17 @@ import com.arcsoft.face.toolkit.ImageFactory;
|
|
|
import com.arcsoft.face.toolkit.ImageInfo;
|
|
|
import com.doc.common.core.domain.entity.SysUserExpand;
|
|
|
import com.doc.common.utils.SecurityUtils;
|
|
|
+import com.doc.common.utils.sign.Base64;
|
|
|
+import com.doc.face.init.FaceEngineInit;
|
|
|
import com.doc.face.service.IFaceService;
|
|
|
-import com.doc.face.service.init.FaceEngineInit;
|
|
|
+import com.doc.face.util.FaceEngineUtil;
|
|
|
import com.doc.system.service.ISysUserExpandService;
|
|
|
import javafx.util.Pair;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import javax.annotation.PostConstruct;
|
|
|
import javax.annotation.Resource;
|
|
|
import java.io.File;
|
|
|
-import java.nio.charset.StandardCharsets;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
|
|
|
@@ -29,18 +31,26 @@ import java.util.List;
|
|
|
public class FaceServiceImpl implements IFaceService {
|
|
|
@Resource
|
|
|
private FaceEngineInit faceEngineInit;
|
|
|
+
|
|
|
+ private FaceEngine faceEngine;
|
|
|
@Resource
|
|
|
private ISysUserExpandService expandService;
|
|
|
|
|
|
+ @PostConstruct
|
|
|
+ public void init() {
|
|
|
+ faceEngine = faceEngineInit.getFaceEngine();
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public void detectFaces(File file) {
|
|
|
byte[] featureData = faceFeature(file);
|
|
|
if (featureData != null) {
|
|
|
- String feature = new String(featureData, StandardCharsets.ISO_8859_1);
|
|
|
+ String feature = Base64.encode(featureData);
|
|
|
SysUserExpand expand = new SysUserExpand();
|
|
|
expand.setUserId(SecurityUtils.getUserId());
|
|
|
expand.setFaceFeature(feature);
|
|
|
expandService.updateSysUserExpand(expand);
|
|
|
+ FaceEngineUtil.registerFaceFeature(faceEngine, expand);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -51,7 +61,6 @@ public class FaceServiceImpl implements IFaceService {
|
|
|
* @return 特征值
|
|
|
*/
|
|
|
private byte[] faceFeature(File file) {
|
|
|
- FaceEngine faceEngine = faceEngineInit.getFaceEngine();
|
|
|
ImageInfo imageInfo = ImageFactory.getRGBData(file);
|
|
|
List<FaceInfo> faceInfoList = new ArrayList<>();
|
|
|
faceEngine.detectFaces(imageInfo, faceInfoList);
|
|
|
@@ -71,10 +80,10 @@ public class FaceServiceImpl implements IFaceService {
|
|
|
* 人脸识别
|
|
|
*
|
|
|
* @param file 人脸图片
|
|
|
+ * * @return key 用户ID value 分数
|
|
|
*/
|
|
|
@Override
|
|
|
public Pair<Long, Float> searchFaces(File file) {
|
|
|
- FaceEngine faceEngine = faceEngineInit.getFaceEngine();
|
|
|
byte[] featureData = faceFeature(file);
|
|
|
if (featureData != null) {
|
|
|
FaceFeature faceFeature = new FaceFeature();
|
|
|
@@ -82,7 +91,8 @@ public class FaceServiceImpl implements IFaceService {
|
|
|
SearchResult searchResult = new SearchResult();
|
|
|
faceEngine.searchFaceFeature(faceFeature, CompareModel.LIFE_PHOTO, searchResult);
|
|
|
int userId = searchResult.getFaceFeatureInfo().getSearchId();
|
|
|
- System.err.println(searchResult.getFaceFeatureInfo().getSearchId());
|
|
|
+// System.err.println(searchResult.getFaceFeatureInfo().getSearchId());
|
|
|
+
|
|
|
//特征比对
|
|
|
FaceSimilar faceSimilar = new FaceSimilar();
|
|
|
FaceFeature targetFace = new FaceFeature();
|