123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- package com.iden.bms.face;
- import cn.hutool.core.collection.CollUtil;
- import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
- import com.face.monitor.FaceMonitor;
- import com.face.monitor.model.FaceModel;
- import com.iden.common.entity.IdenCamera;
- import com.iden.common.entity.IdenCommunity;
- import com.iden.common.entity.IdenImageStore;
- import com.iden.common.service.IdenCameraService;
- import com.iden.common.service.IdenCommunityService;
- import com.iden.common.service.IdenImageStoreService;
- import com.iden.common.util.DateUtils;
- import org.apache.commons.lang3.StringUtils;
- import org.apache.logging.log4j.LogManager;
- import org.apache.logging.log4j.Logger;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.stereotype.Service;
- import javax.annotation.Resource;
- import java.io.File;
- import java.util.ArrayList;
- import java.util.List;
- /**
- * @Author: stw
- * @Date: 2021/7/14
- * @Desc:
- */
- @Service
- public class FaceIdenService {
- @Resource
- private IdenImageStoreService idenImageStoreService;
- @Resource
- private IdenCameraService idenCameraService;
- @Resource
- private IdenCommunityService idenCommunityService;
- @Value("${iden.root:#{null}}")
- private String idenRoot;
- @Value("${file.url:#{null}}")
- private String fileUrl;
- private static final Logger logger = LogManager.getLogger(FaceIdenService.class);
- /**
- *
- * @throws Exception
- */
- public void exe() throws Exception {
- logger.info("FaceIdenService.exe start...");
- File originImageDirFile = new File(idenRoot + "data/origin/image");
- //初始化引擎
- FaceMonitor faceMonitor = new FaceMonitor();
- faceMonitor.init(idenRoot + "face/model", 0);
- //使用摄像头编码做目录名,里面图像或视频的名称上加上拍照时间,
- // 比如 20211217123023.jpg 20211217123023~20211217123323.mp4
- if (originImageDirFile.isDirectory()) {
- File[] cameraCodeDirs = originImageDirFile.listFiles();
- if(cameraCodeDirs != null && cameraCodeDirs.length > 0){
- logger.info("FaceIdenService.exe ...1");
- for(File cameraCodedir : cameraCodeDirs) {
- if(cameraCodedir.isDirectory()){
- File[] imgFiles = cameraCodedir.listFiles();
- if(imgFiles != null && imgFiles.length > 0){
- logger.info("FaceIdenService.exe ...2");
- String cameraCode = cameraCodedir.getName();
- QueryWrapper<IdenCamera> queryWrapper = new QueryWrapper<>();
- queryWrapper.lambda().eq(IdenCamera::getCode,cameraCode);
- IdenCamera idenCamera = idenCameraService.getOne(queryWrapper);
- if(idenCamera == null){
- continue;
- }
- logger.info("FaceIdenService.exe ...3");
- //获取特征码
- FaceModel[] faceModels = FaceIdenTool.extractFeature(faceMonitor,imgFiles);
- List<IdenImageStore> idenImageStoreList = new ArrayList<>();
- for(int i = 0; i < imgFiles.length; i++) {
- File imgFile = imgFiles[i];
- IdenImageStore idenImageStore = new IdenImageStore();
- idenImageStore.setCameraId(idenCamera.getId());
- idenImageStore.setCommunityId(idenCamera.getCommunityId());
- String photographPlace = idenCamera.getPlace();
- logger.info("FaceIdenService.exe ...4");
- if (StringUtils.isEmpty(photographPlace)) {
- IdenCommunity idenCommunity = idenCommunityService.getById(idenCamera.getCommunityId());
- if(idenCommunity != null) {
- photographPlace = idenCommunity.getName() + "(" + idenCamera.getLongitude() + ":" + idenCamera.getLatitude() + ")";
- }
- }
- logger.info("FaceIdenService.exe ...5");
- idenImageStore.setPhotographPlace(photographPlace);
- String photographTime = imgFile.getName().replace(".jpg","");
- idenImageStore.setPhotographTime(DateUtils.strToDate(photographTime,"yyyyMMddHHmmss"));
- idenImageStore.setFeatPtr(FaceIdenTool.getFeatPtr(faceModels,String.valueOf(i)));
- File finalDir = new File(imgFile.getParentFile().getAbsolutePath().replace("origin","final"));
- if(!finalDir.exists()){
- finalDir.mkdirs();
- }
- logger.info("FaceIdenService.exe ...finalDir == " + finalDir.getAbsolutePath());
- logger.info("FaceIdenService.exe ...imgFile.getName() == " + imgFile.getName());
- File finalImgFile = new File(finalDir, imgFile.getName());
- logger.info("FaceIdenService.exe ...finalImgFile == " + finalImgFile.getAbsolutePath());
- imgFile.renameTo(finalImgFile);//移动到最终目录
- idenImageStore.setImage( fileUrl + cameraCode + "/" + finalImgFile.getName());
- //TODO 关联personId
- idenImageStoreList.add(idenImageStore);
- }
- logger.info("FaceIdenService.exe ...7");
- //把图像存到图库中
- if (CollUtil.isNotEmpty(idenImageStoreList)) {
- logger.info("FaceIdenService.exe ...8");
- idenImageStoreService.saveBatch(idenImageStoreList);
- }
- }
- }
- }
- }
- }
- logger.info("FaceIdenService.exe end");
- }
- }
|