| 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; | 
|     } | 
| } |