package com.doumee.keyCabinet.utils.face; import com.baidu.idl.main.facesdk.model.BDFaceDetectListConf; import com.baidu.idl.main.facesdk.model.BDFaceSDKConfig; import com.doumee.keyCabinet.utils.face.model.SingleBaseConfig; import com.example.datalibrary.model.BDFaceCheckConfig; import com.example.datalibrary.model.BDLiveConfig; import com.example.datalibrary.model.BDQualityConfig; public class FaceUtils { private static class HolderClass { private static final FaceUtils INSTANCE = new FaceUtils(); } public static FaceUtils getInstance() { return HolderClass.INSTANCE; } public BDFaceSDKConfig getBDFaceSDKConfig(){ BDFaceSDKConfig config = new BDFaceSDKConfig(); // TODO: 最小人脸个数检查,默认设置为1,用户根据自己需求调整 config.maxDetectNum = 2; config.trackInterval = Integer.MAX_VALUE; // TODO: 默认为80px。可传入大于30px的数值,小于此大小的人脸不予检测,生效时间第一次加载模型 config.minFaceSize = SingleBaseConfig.getBaseConfig().getMinimumFace(); // TODO: 默认为0.5。可传入大于0.3的数值 config.notRGBFaceThreshold = SingleBaseConfig.getBaseConfig().getFaceThreshold(); config.notNIRFaceThreshold = SingleBaseConfig.getBaseConfig().getFaceThreshold(); // 是否进行属性检测,默认关闭 config.isAttribute = SingleBaseConfig.getBaseConfig().isAttribute(); // // // TODO: 模糊,遮挡,光照三个质量检测和姿态角查默认关闭,如果要开启,设置页启动 config.isCheckBlur = config.isOcclusion = config.isIllumination = config.isHeadPose = SingleBaseConfig.getBaseConfig().isQualityControl(); return config; } public BDFaceCheckConfig getBDFaceCheckConfig(){ BDFaceDetectListConf bdFaceDetectListConfig = getBDFaceDetectListConf(); BDQualityConfig bdQualityConfig = getBDQualityConfig(); BDLiveConfig bdLiveConfig = getBDLiveConfig(); float threholdScore = 0; // 判断第一个阈值是否大于设定阈值,如果大于,检索成功 if (SingleBaseConfig.getBaseConfig().getActiveModel() == 1) { threholdScore = SingleBaseConfig.getBaseConfig().getLiveThreshold(); } else if (SingleBaseConfig.getBaseConfig().getActiveModel() == 2) { threholdScore = SingleBaseConfig.getBaseConfig().getIdThreshold(); } else if (SingleBaseConfig.getBaseConfig().getActiveModel() == 3) { threholdScore = SingleBaseConfig.getBaseConfig().getRgbAndNirThreshold(); } return new BDFaceCheckConfig(3 , SingleBaseConfig.getBaseConfig().isDarkEnhance() , threholdScore , SingleBaseConfig.getBaseConfig().isBestImage() , SingleBaseConfig.getBaseConfig().getCameraType() , SingleBaseConfig.getBaseConfig().getActiveModel() , bdFaceDetectListConfig , bdQualityConfig , bdLiveConfig ); } public BDLiveConfig getBDLiveConfig(){ return SingleBaseConfig.getBaseConfig().isLivingControl() ? new BDLiveConfig(SingleBaseConfig.getBaseConfig().getRgbLiveScore() , SingleBaseConfig.getBaseConfig().getNirLiveScore() , SingleBaseConfig.getBaseConfig().getDepthLiveScore()) : null; } private BDQualityConfig getBDQualityConfig(){ return !SingleBaseConfig.getBaseConfig().isQualityControl() ? null : new BDQualityConfig(SingleBaseConfig.getBaseConfig().getBlur() , SingleBaseConfig.getBaseConfig().getIllumination() , SingleBaseConfig.getBaseConfig().getGesture() , SingleBaseConfig.getBaseConfig().getLeftEye() , SingleBaseConfig.getBaseConfig().getRightEye() , SingleBaseConfig.getBaseConfig().getNose() , SingleBaseConfig.getBaseConfig().getMouth() , SingleBaseConfig.getBaseConfig().getLeftCheek() , SingleBaseConfig.getBaseConfig().getRightCheek() , SingleBaseConfig.getBaseConfig().getChinContour()); } private BDFaceDetectListConf getBDFaceDetectListConf(){ BDFaceDetectListConf bdFaceDetectListConfig = new BDFaceDetectListConf(); bdFaceDetectListConfig.usingQuality = bdFaceDetectListConfig.usingHeadPose = SingleBaseConfig.getBaseConfig().isQualityControl(); bdFaceDetectListConfig.usingBestImage = SingleBaseConfig.getBaseConfig().isBestImage(); return bdFaceDetectListConfig; } }