|
@ -23,6 +23,8 @@ import java.io.InputStream; |
|
|
import java.util.ArrayList; |
|
|
import java.util.ArrayList; |
|
|
import java.util.List; |
|
|
import java.util.List; |
|
|
|
|
|
|
|
|
|
|
|
import static com.arcsoft.face.toolkit.ImageFactory.getRGBData; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* minio文件上传工具类 |
|
|
* minio文件上传工具类 |
|
@ -86,18 +88,9 @@ public class FaceEnginUtil { |
|
|
* 录入人脸接口存入byte数组特征值 |
|
|
* 录入人脸接口存入byte数组特征值 |
|
|
* @return |
|
|
* @return |
|
|
*/ |
|
|
*/ |
|
|
public static byte[] uploadInput(InputStream inputstream) { |
|
|
public static byte[] uploadInput(File file) { |
|
|
FaceEngine faceEngine = FaceEnginUtil.init(); |
|
|
FaceEngine faceEngine = FaceEnginUtil.init(); |
|
|
ImageInfo imageInfo = null; |
|
|
ImageInfo imageInfo = getRGBData(file); |
|
|
try { |
|
|
|
|
|
imageInfo = ImageFactory.getRGBData(inputstream); |
|
|
|
|
|
if (inputstream != null) { |
|
|
|
|
|
inputstream.close(); |
|
|
|
|
|
} |
|
|
|
|
|
} catch (IOException e) { |
|
|
|
|
|
throw new ServiceException("文件非图像类型"); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
List<FaceInfo> faceInfoList = new ArrayList<FaceInfo>(); |
|
|
List<FaceInfo> faceInfoList = new ArrayList<FaceInfo>(); |
|
|
faceEngine.detectFaces(imageInfo.getImageData(), imageInfo.getWidth(), imageInfo.getHeight(), imageInfo.getImageFormat(), faceInfoList); |
|
|
faceEngine.detectFaces(imageInfo.getImageData(), imageInfo.getWidth(), imageInfo.getHeight(), imageInfo.getImageFormat(), faceInfoList); |
|
|
//特征提取
|
|
|
//特征提取
|
|
@ -114,32 +107,25 @@ public class FaceEnginUtil { |
|
|
* @param faceFeature1 数据库人脸存根 |
|
|
* @param faceFeature1 数据库人脸存根 |
|
|
* @return float 数据判断大于0.7以上 |
|
|
* @return float 数据判断大于0.7以上 |
|
|
*/ |
|
|
*/ |
|
|
public static float uploadContrast(MultipartFile file,Byte[] faceFeature1) { |
|
|
public static float uploadContrast(File file,byte[] faceFeature1) { |
|
|
|
|
|
|
|
|
|
|
|
FaceFeature targetFaceFeature = new FaceFeature(); |
|
|
|
|
|
targetFaceFeature.setFeatureData(faceFeature1); |
|
|
|
|
|
|
|
|
FaceEngine faceEngine = FaceEnginUtil.init(); |
|
|
FaceEngine faceEngine = FaceEnginUtil.init(); |
|
|
InputStream inputstream = null; |
|
|
|
|
|
ImageInfo imageInfo = null; |
|
|
|
|
|
try { |
|
|
|
|
|
inputstream = file.getInputStream(); |
|
|
|
|
|
imageInfo = ImageFactory.getRGBData(inputstream); |
|
|
|
|
|
if (inputstream != null) { |
|
|
|
|
|
inputstream.close(); |
|
|
|
|
|
} |
|
|
|
|
|
} catch (IOException e) { |
|
|
|
|
|
throw new ServiceException("文件非图像类型"); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ImageInfo imageInfo = getRGBData(file); |
|
|
List<FaceInfo> faceInfoList = new ArrayList<FaceInfo>(); |
|
|
List<FaceInfo> faceInfoList = new ArrayList<FaceInfo>(); |
|
|
faceEngine.detectFaces(imageInfo.getImageData(), imageInfo.getWidth(), imageInfo.getHeight(), imageInfo.getImageFormat(), faceInfoList); |
|
|
faceEngine.detectFaces(imageInfo.getImageData(), imageInfo.getWidth(), imageInfo.getHeight(), imageInfo.getImageFormat(), faceInfoList); |
|
|
|
|
|
|
|
|
//特征提取
|
|
|
//特征提取
|
|
|
FaceFeature faceFeature = new FaceFeature(); |
|
|
FaceFeature faceFeature = new FaceFeature(); |
|
|
faceEngine.extractFaceFeature(imageInfo.getImageData(), imageInfo.getWidth(), imageInfo.getHeight(), imageInfo.getImageFormat(), faceInfoList.get(0), faceFeature); |
|
|
faceEngine.extractFaceFeature(imageInfo.getImageData(), imageInfo.getWidth(), imageInfo.getHeight(), imageInfo.getImageFormat(), faceInfoList.get(0), faceFeature); |
|
|
byte[] featureData = faceFeature.getFeatureData(); |
|
|
|
|
|
//特征比对
|
|
|
|
|
|
FaceFeature targetFaceFeature = new FaceFeature(); |
|
|
|
|
|
targetFaceFeature.setFeatureData(featureData); |
|
|
|
|
|
FaceFeature sourceFaceFeature = new FaceFeature(); |
|
|
FaceFeature sourceFaceFeature = new FaceFeature(); |
|
|
sourceFaceFeature.setFeatureData(faceFeature.getFeatureData()); |
|
|
sourceFaceFeature.setFeatureData(faceFeature.getFeatureData()); |
|
|
FaceSimilar faceSimilar = new FaceSimilar(); |
|
|
FaceSimilar faceSimilar = new FaceSimilar(); |
|
|
|
|
|
//特征比对
|
|
|
faceEngine.compareFaceFeature(targetFaceFeature, sourceFaceFeature, faceSimilar); |
|
|
faceEngine.compareFaceFeature(targetFaceFeature, sourceFaceFeature, faceSimilar); |
|
|
FaceEnginUtil.close(faceEngine); |
|
|
FaceEnginUtil.close(faceEngine); |
|
|
return faceSimilar.getScore(); |
|
|
return faceSimilar.getScore(); |
|
|