package com.example.datalibrary.manager; import android.content.Context; import com.baidu.idl.main.facesdk.FaceCrop; import com.baidu.idl.main.facesdk.FaceDarkEnhance; import com.baidu.idl.main.facesdk.FaceDetect; import com.baidu.idl.main.facesdk.FaceFeature; import com.baidu.idl.main.facesdk.FaceLive; import com.baidu.idl.main.facesdk.FaceMouthMask; import com.baidu.idl.main.facesdk.FaceSearch; import com.baidu.idl.main.facesdk.model.BDFaceInstance; import com.baidu.idl.main.facesdk.model.BDFaceSDKConfig; import com.example.datalibrary.factory.specific.CropBuilder; import com.example.datalibrary.factory.specific.DarkBuilder; import com.example.datalibrary.factory.specific.DetectBuilder; import com.example.datalibrary.factory.specific.DetectNirBuilder; import com.example.datalibrary.factory.specific.DetectQualityBuilder; import com.example.datalibrary.factory.specific.FeatureBuilder; import com.example.datalibrary.factory.specific.LiveBuilder; import com.example.datalibrary.factory.specific.MouthMaskBuilder; import com.example.datalibrary.factory.specific.TrackBuilder; import com.example.datalibrary.listener.SdkInitListener; public class FaceModel implements SdkInitListener{ private TrackBuilder trackBuilder; private DetectBuilder detectBuilder; private DetectQualityBuilder detectQualityBuilder; private DetectNirBuilder detectNirBuilder; private DarkBuilder darkBuilder; private FeatureBuilder featureBuilder; private FeatureBuilder featurePersonBuilder; private LiveBuilder liveBuilder; private CropBuilder cropBuilder; private MouthMaskBuilder mouthMaskBuilder = null; private boolean isModelInit; private boolean checkMouthMask = false; public void setListener(SdkInitListener listener) { this.listener = listener; } private SdkInitListener listener; public FaceModel(boolean checkMouthMask){ isModelInit = false; cropBuilder = new CropBuilder(this); trackBuilder = new TrackBuilder(this); detectBuilder = new DetectBuilder(this); detectQualityBuilder = new DetectQualityBuilder(this); detectNirBuilder = new DetectNirBuilder(this); darkBuilder = new DarkBuilder(this); liveBuilder = new LiveBuilder(this); featureBuilder = new FeatureBuilder(this); featurePersonBuilder = new FeatureBuilder(this); this.checkMouthMask = checkMouthMask; if (checkMouthMask) { mouthMaskBuilder = new MouthMaskBuilder(this); } } public void init(BDFaceSDKConfig config , Context context){ if (isModelInit){ return; } BDFaceInstance trackInstance = new BDFaceInstance(); trackInstance.creatInstance(); BDFaceInstance detectInstance = new BDFaceInstance(); detectInstance.creatInstance(); // 人证核验init入参 BDFaceInstance detectQualityInstance = new BDFaceInstance(); detectQualityInstance.creatInstance(); BDFaceInstance cropInstance = new BDFaceInstance(); cropInstance.creatInstance(); trackBuilder.init(trackInstance , config); cropBuilder.init(cropInstance); detectBuilder.init(detectInstance , config); detectNirBuilder.init(detectInstance); // 认证核验检测模型预配置 detectQualityBuilder.init(detectQualityInstance , config); darkBuilder.init(null); liveBuilder.init(null); // 认证核验提取特征模型预配置 featurePersonBuilder.init(detectQualityInstance); // 通用特征提取模型预配置 featureBuilder.init(null); if (checkMouthMask){ mouthMaskBuilder.init(null); } if (checkMouthMask) { // 口罩模型初始化 mouthMaskBuilder.initModel(context); } // 抠图模型初始化 cropBuilder.initModel(context); // 跟踪模型初始化 trackBuilder.initModel(context); // 检测模型初始化 detectBuilder.initModel(context); // 认证核验检测模型初始化 (边导入边识别-需初始化此处) detectQualityBuilder.initModel(context); // 红外检测模型 detectNirBuilder.initModel(context); // 暗光恢复模型 darkBuilder.initModel(context); // 活体分数模型 liveBuilder.initModel(context); // 认证特征提取模型 (边导入边识别-需初始化此处) featurePersonBuilder.initModel(context); // 通用特征提取模型 featureBuilder.initModel(context); } public void setCheckMouthMask(boolean checkMouthMask){ this.checkMouthMask = checkMouthMask; } @Override public void initStart() { listener.initStart(); } @Override public void initLicenseSuccess() { listener.initLicenseSuccess(); } @Override public void initLicenseFail(int errorCode, String msg) { listener.initLicenseFail(errorCode , msg); } @Override public void initModelSuccess() { listener.initModelSuccess(); isModelInit = true; } @Override public void initModelFail(int errorCode, String msg) { isModelInit = false; listener.initModelFail(errorCode , msg); } public FaceFeature getFacePersonFeature(){ return featurePersonBuilder.getExample(); } public FaceSearch getFacePersonSearch(){ return featurePersonBuilder.getFaceSearch(); } public FaceFeature getFaceFeature(){ return featureBuilder.getExample(); } public FaceSearch getFaceSearch(){ return featureBuilder.getFaceSearch(); } public FaceDetect getFaceTrack(){ return trackBuilder.getExample(); } public FaceCrop getFaceCrop(){ return cropBuilder.getExample(); } public FaceDetect getFaceDetectPerson(){ return detectQualityBuilder.getExample(); } public FaceDetect getFaceDetect(){ return detectBuilder.getExample(); } public FaceDetect getFaceNirDetect(){ return detectNirBuilder.getExample(); } public FaceDarkEnhance getDark(){ return darkBuilder.getExample(); } public FaceLive getFaceLive(){ return liveBuilder.getExample(); } public FaceMouthMask getFaceMoutMask(){ if (mouthMaskBuilder != null) { return mouthMaskBuilder.getExample(); } else{ return null; } } }