瀏覽代碼

v4.14.0 增加ai识别

dengsixing 5 月之前
父節點
當前提交
d8c0100fff

+ 7 - 1
src/main/java/com/fdkankan/modeling/receiver/RabbitMqListener.java

@@ -12,6 +12,7 @@ import com.fdkankan.modeling.constants.SysConstants;
 import com.fdkankan.modeling.entity.BuildLog;
 import com.fdkankan.modeling.exception.BuildException;
 import com.fdkankan.modeling.handler.LaserSceneObjGenerateHandler;
+import com.fdkankan.modeling.service.IAiService;
 import com.fdkankan.modeling.service.IBuildLogService;
 import com.fdkankan.modeling.service.IBuildService;
 import com.fdkankan.modeling.service.ISceneBuildProcessLogService;
@@ -83,6 +84,8 @@ public class RabbitMqListener {
 
     @Autowired
     private IBuildService buildService;
+    @Autowired
+    private IAiService aiService;
 
     /**
      * 场景计算
@@ -280,7 +283,10 @@ public class RabbitMqListener {
             log.error("未检测到计算结果文件:upload.json");
             return ModelingBuildStatus.FAILED;
         }
-        log.info("八目上完oss结束修改数据:"+num);
+
+        //调用ai识别,但是报错也不影响计算结果
+        aiService.detectScenePano(path);
+
         return ModelingBuildStatus.SUCCESS;
     }
 

+ 7 - 0
src/main/java/com/fdkankan/modeling/service/IAiService.java

@@ -0,0 +1,7 @@
+package com.fdkankan.modeling.service;
+
+public interface IAiService {
+
+    void detectScenePano(String path);
+
+}

+ 53 - 0
src/main/java/com/fdkankan/modeling/service/impl/AiServiceImpl.java

@@ -0,0 +1,53 @@
+package com.fdkankan.modeling.service.impl;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.io.FileUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.fdkankan.common.util.CmdUtils;
+import com.fdkankan.model.constants.ConstantFilePath;
+import com.fdkankan.model.utils.ComputerUtil;
+import com.fdkankan.model.utils.CreateObjUtil;
+import com.fdkankan.modeling.service.IAiService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.io.File;
+import java.util.Date;
+import java.util.List;
+
+@Slf4j
+@Service
+public class AiServiceImpl implements IAiService {
+
+    public final static String PANO_DETECT = "bash /home/ubuntu/bin/PotreeConverter.sh pano_detect %s %s";
+
+    @Override
+    public void detectScenePano(String path) {
+        try {
+            String resultsPath = path + File.separator + "results" + File.separator;
+            String highPath = resultsPath + "high" + File.separator;
+            String aiWorkPath = highPath + "ai" + File.separator;
+            FileUtil.mkdir(aiWorkPath);
+            List<File> files = FileUtil.loopFiles(highPath);
+            if(CollUtil.isEmpty(files)){
+                return;
+            }
+            for (File file : files) {
+                String absolutePath = file.getAbsolutePath();
+                try {
+                    String name = FileUtil.getName(absolutePath);
+                    String prefix = FileUtil.getPrefix(name);
+                    String outPath = aiWorkPath + prefix + File.separator;
+                    FileUtil.mkdir(outPath);
+                    String detectPath = outPath + "detect.json";
+                    String cmd = String.format(PANO_DETECT, absolutePath, detectPath);
+                    CmdUtils.callLine(cmd, 50);
+                }catch (Exception e){
+                    log.error("ai识别报错,inPath:{}", absolutePath, e);
+                }
+            }
+        }catch (Exception e){
+            log.error("ai识别报错", e);
+        }
+    }
+}