123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- package com.doc.face.service.init;
- import com.arcsoft.face.EngineConfiguration;
- import com.arcsoft.face.FaceEngine;
- import com.arcsoft.face.FaceFeatureInfo;
- import com.arcsoft.face.FunctionConfiguration;
- import com.arcsoft.face.enums.DetectMode;
- import com.arcsoft.face.enums.DetectOrient;
- import com.doc.system.service.ISysUserExpandService;
- import lombok.Data;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.context.ApplicationListener;
- import org.springframework.context.event.ContextRefreshedEvent;
- import org.springframework.stereotype.Component;
- import javax.annotation.Resource;
- import java.nio.charset.StandardCharsets;
- /**
- * 聊天消息管理Service业务层处理
- *
- * @author wukai
- * @date 2023-08-24
- */
- @Component
- @Slf4j
- @Data
- public class FaceEngineInit implements ApplicationListener<ContextRefreshedEvent> {
- @Value("${face-engine.lib}")
- private String lib;
- @Value("${face-engine.sdk-key}")
- private String appId;
- @Value("${face-engine.sdk-key}")
- private String sdkKey;
- @Value("${face-engine.active-key}")
- private String activeKey;
- @Value("${face-engine.active-file}")
- private String activeFile;
- private FaceEngine faceEngine;
- @Resource
- private ISysUserExpandService expandService;
- private void initEngine() {
- //人脸识别引擎库存放路径
- faceEngine = new FaceEngine(lib);
- //离线激活引擎
- faceEngine.activeOffline(activeFile);
- //引擎配置
- EngineConfiguration engineConfiguration = new EngineConfiguration();
- engineConfiguration.setDetectMode(DetectMode.ASF_DETECT_MODE_IMAGE);
- engineConfiguration.setDetectFaceOrientPriority(DetectOrient.ASF_OP_ALL_OUT);
- engineConfiguration.setDetectFaceMaxNum(10);
- //功能配置
- FunctionConfiguration functionConfiguration = new FunctionConfiguration();
- functionConfiguration.setSupportAge(true);
- functionConfiguration.setSupportFaceDetect(true);
- functionConfiguration.setSupportFaceRecognition(true);
- functionConfiguration.setSupportGender(true);
- functionConfiguration.setSupportLiveness(true);
- functionConfiguration.setSupportIRLiveness(true);
- functionConfiguration.setSupportImageQuality(true);
- functionConfiguration.setSupportMaskDetect(true);
- functionConfiguration.setSupportUpdateFaceData(true);
- engineConfiguration.setFunctionConfiguration(functionConfiguration);
- //初始化引擎
- faceEngine.init(engineConfiguration);
- }
- /**
- * 注册人脸信息
- */
- private void register() {
- expandService.selectFaceFeatureList().forEach(expand -> {
- FaceFeatureInfo faceFeatureInfo = new FaceFeatureInfo();
- faceFeatureInfo.setSearchId(expand.getUserId().intValue());
- faceFeatureInfo.setFaceTag(expand.getRemark());
- String feature = expand.getFaceFeature();
- faceFeatureInfo.setFeatureData(feature.getBytes(StandardCharsets.ISO_8859_1));
- faceEngine.registerFaceFeature(faceFeatureInfo);
- });
- }
- @Override
- public void onApplicationEvent(ContextRefreshedEvent event) {
- if (event.getApplicationContext().getParent() == null) {
- log.info("SpringBoot项目加载后执行人脸识别初始化!");
- initEngine();
- register();
- }
- }
- }
|