suntianwu vor 3 Jahren
Ursprung
Commit
1b3ffd4e57

+ 43 - 48
src/main/java/com/iden/bms/service/FaceIdenService.java

@@ -71,58 +71,53 @@ public class FaceIdenService {
      * 初始化人脸识别库
      */
     public void initFaceDataset() {
+        FaceMonitor faceMonitor = FaceMoniterCache.getFaceMonitor(Constants.FACE_FEAT_PTR_CACHE_KEY);
+        if (faceMonitor == null) {
+            MyFaceMonitor myFaceMonitor = FaceIdenTool.getMyFaceMonitor();
+            faceMonitor = myFaceMonitor.getFaceMonitor();
+            FaceMoniterCache.setFaceMonitor(Constants.FACE_FEAT_PTR_CACHE_KEY, faceMonitor);
+
+            List<FaceModel> faceModelList = new ArrayList<>();
+            //注册人员
+            QueryWrapper<IdenPerson> queryWrapper = new QueryWrapper<>();
+            queryWrapper.select("uid", "feat_ptr");
+            queryWrapper.lambda().isNotNull(IdenPerson::getFeatPtr);
+            List<IdenPerson> idenPersonList = idenPersonService.list(queryWrapper);
+            if (CollUtil.isNotEmpty(idenPersonList)) {
+
+                for (int i = 0; i < idenPersonList.size(); i++) {
+                    IdenPerson idenPerson = idenPersonList.get(i);
+                    FaceModel faceModel = new FaceModel();
+                    faceModel.setPersonId(idenPerson.getUid().intValue());
+                    faceModel.setName(String.valueOf(idenPerson.getUid()));
+                    faceModel.setFeatValue(ByteUtil.hex2Byte(idenPerson.getFeatPtr()));
+                    faceModelList.add(faceModel);
+                }
+            }
 
-      List<FaceModel> faceModelList = new ArrayList<>();
-        //注册人员
-        QueryWrapper<IdenPerson> queryWrapper = new QueryWrapper<>();
-        queryWrapper.select("uid","feat_ptr");
-        queryWrapper.lambda().isNotNull(IdenPerson::getFeatPtr);
-        List<IdenPerson> idenPersonList = idenPersonService.list(queryWrapper);
-        if (CollUtil.isNotEmpty(idenPersonList)) {
-
-            for (int i = 0; i < idenPersonList.size(); i++) {
-                IdenPerson idenPerson = idenPersonList.get(i);
-                FaceModel faceModel = new FaceModel();
-                faceModel.setPersonId(idenPerson.getUid().intValue());
-                faceModel.setName(String.valueOf(idenPerson.getUid()));
-                faceModel.setFeatValue(ByteUtil.hex2Byte(idenPerson.getFeatPtr()));
-                faceModelList.add(faceModel);
+            //陌生人
+            QueryWrapper<IdenPersonStranger> queryWrapper1 = new QueryWrapper<>();
+            queryWrapper1.select("uid", "feat_ptr");
+            queryWrapper1.lambda().isNotNull(IdenPersonStranger::getFeatPtr);
+            List<IdenPersonStranger> idenPersonStrangerList = this.idenPersonStrangerService.list(queryWrapper1);
+            if (CollUtil.isNotEmpty(idenPersonStrangerList)) {
+
+                for (int i = 0; i < idenPersonStrangerList.size(); i++) {
+                    IdenPersonStranger idenPersonStranger = idenPersonStrangerList.get(i);
+                    FaceModel faceModel = new FaceModel();
+                    faceModel.setPersonId(idenPersonStranger.getUid().intValue());
+                    faceModel.setName(String.valueOf(idenPersonStranger.getUid()));
+                    faceModel.setFeatValue(ByteUtil.hex2Byte(idenPersonStranger.getFeatPtr()));
+                    faceModelList.add(faceModel);
+                }
             }
-        }
 
-        //陌生人
-        QueryWrapper<IdenPersonStranger> queryWrapper1 = new QueryWrapper<>();
-        queryWrapper1.select("uid","feat_ptr");
-        queryWrapper1.lambda().isNotNull(IdenPersonStranger::getFeatPtr);
-        List<IdenPersonStranger> idenPersonStrangerList = this.idenPersonStrangerService.list(queryWrapper1);
-        if (CollUtil.isNotEmpty(idenPersonStrangerList)) {
-
-            for(int i = 0; i < idenPersonStrangerList.size() ; i++){
-                IdenPersonStranger idenPersonStranger = idenPersonStrangerList.get(i);
-                FaceModel faceModel = new FaceModel();
-                faceModel.setPersonId(idenPersonStranger.getUid().intValue());
-                faceModel.setName(String.valueOf(idenPersonStranger.getUid()));
-                faceModel.setFeatValue(ByteUtil.hex2Byte(idenPersonStranger.getFeatPtr()));
-                faceModelList.add(faceModel);
+            if (CollUtil.isNotEmpty(faceModelList)) {
+                FaceModel[] dataset = new FaceModel[faceModelList.size()];
+                faceModelList.toArray(dataset);
+                faceMonitor.loadFaceDataset(dataset);
             }
-         }
-
-         if(CollUtil.isNotEmpty(faceModelList)){
-             FaceModel[] dataset = new FaceModel[faceModelList.size()];
-             faceModelList.toArray(dataset);
-
-             FaceMonitor faceMonitorOld = FaceMoniterCache.getFaceMonitor(Constants.FACE_FEAT_PTR_CACHE_KEY);
-             if(faceMonitorOld != null){
-                 faceMonitorOld.loadFaceDataset(dataset);
-             } else {
-                 MyFaceMonitor myFaceMonitor = FaceIdenTool.getMyFaceMonitor();
-                 FaceMonitor faceMonitor = myFaceMonitor.getFaceMonitor();
-                 if(faceMonitor != null){
-                     faceMonitor.loadFaceDataset(dataset);
-                     FaceMoniterCache.setFaceMonitor(Constants.FACE_FEAT_PTR_CACHE_KEY, faceMonitor);
-                 }
-             }
-         }
+        }
     }
 
 

+ 5 - 3
src/main/java/com/iden/common/facetool/FaceIdenTool.java

@@ -29,15 +29,15 @@ public class FaceIdenTool {
 
         GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig();
         // 最大空闲数
-        poolConfig.setMaxIdle(5);
+        poolConfig.setMaxIdle(10);
         // 最小空闲数, 池中只有一个空闲对象的时候,池会在创建一个对象,并借出一个对象,从而保证池中最小空闲数为1
         poolConfig.setMinIdle(1);
         // 最大池对象总数
-        poolConfig.setMaxTotal(50);
+        poolConfig.setMaxTotal(100);
         // 逐出连接的最小空闲时间 默认1800000毫秒(30分钟)
         poolConfig.setMinEvictableIdleTimeMillis(1800000);
         // 逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1
-        poolConfig.setTimeBetweenEvictionRunsMillis(1800000 * 2L);
+        poolConfig.setTimeBetweenEvictionRunsMillis(-1);
         // 在获取对象的时候检查有效性, 默认false
         poolConfig.setTestOnBorrow(true);
         // 在归还对象的时候检查有效性, 默认false
@@ -67,6 +67,8 @@ public class FaceIdenTool {
             // 对象池
             final GenericObjectPool<MyFaceMonitor> pool = FaceMoniterCache.getGenericObjectPool(Constants.FACE_MONITOR_POOL_KEY);
             MyFaceMonitor myFaceMonitor = pool.borrowObject();
+            logger.info("myFaceMonitor=="+myFaceMonitor);
+            logger.info("FaceMonitor=="+myFaceMonitor.getFaceMonitor());
             return myFaceMonitor;
         } catch (Exception e){
             e.printStackTrace();