|
@@ -1,9 +1,14 @@
|
|
package com.fdkankan.scene.controller;
|
|
package com.fdkankan.scene.controller;
|
|
|
|
|
|
import cn.hutool.core.io.FileUtil;
|
|
import cn.hutool.core.io.FileUtil;
|
|
|
|
+import cn.hutool.core.lang.UUID;
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
|
+import com.alibaba.fastjson.JSONArray;
|
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
import com.fdkankan.common.constant.CommonOperStatus;
|
|
import com.fdkankan.common.constant.CommonOperStatus;
|
|
|
|
+import com.fdkankan.common.constant.ErrorCode;
|
|
import com.fdkankan.fyun.face.FYunFileServiceInterface;
|
|
import com.fdkankan.fyun.face.FYunFileServiceInterface;
|
|
|
|
+import com.fdkankan.model.constants.ConstantFilePath;
|
|
import com.fdkankan.model.constants.UploadFilePath;
|
|
import com.fdkankan.model.constants.UploadFilePath;
|
|
import com.fdkankan.rabbitmq.util.RabbitMqProducer;
|
|
import com.fdkankan.rabbitmq.util.RabbitMqProducer;
|
|
import com.fdkankan.scene.entity.SceneMarkShape;
|
|
import com.fdkankan.scene.entity.SceneMarkShape;
|
|
@@ -12,12 +17,14 @@ import com.fdkankan.scene.entity.ScenePlusExt;
|
|
import com.fdkankan.scene.service.ISceneMarkShapeService;
|
|
import com.fdkankan.scene.service.ISceneMarkShapeService;
|
|
import com.fdkankan.scene.service.IScenePlusExtService;
|
|
import com.fdkankan.scene.service.IScenePlusExtService;
|
|
import com.fdkankan.scene.service.IScenePlusService;
|
|
import com.fdkankan.scene.service.IScenePlusService;
|
|
|
|
+import com.fdkankan.scene.util.ConverxyUtil;
|
|
import com.fdkankan.scene.vo.FileParamVO;
|
|
import com.fdkankan.scene.vo.FileParamVO;
|
|
import com.fdkankan.scene.vo.SceneMarkShapeDetectParamVO;
|
|
import com.fdkankan.scene.vo.SceneMarkShapeDetectParamVO;
|
|
import com.fdkankan.scene.vo.SceneMarkShapeParamVO;
|
|
import com.fdkankan.scene.vo.SceneMarkShapeParamVO;
|
|
import com.fdkankan.web.controller.BaseController;
|
|
import com.fdkankan.web.controller.BaseController;
|
|
import com.fdkankan.web.response.Result;
|
|
import com.fdkankan.web.response.Result;
|
|
import com.fdkankan.web.response.ResultData;
|
|
import com.fdkankan.web.response.ResultData;
|
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
import org.springframework.validation.annotation.Validated;
|
|
import org.springframework.validation.annotation.Validated;
|
|
@@ -25,7 +32,9 @@ import org.springframework.web.bind.annotation.*;
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
|
|
+import java.io.File;
|
|
import java.io.IOException;
|
|
import java.io.IOException;
|
|
|
|
+import java.nio.charset.Charset;
|
|
import java.util.*;
|
|
import java.util.*;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
@@ -36,6 +45,7 @@ import java.util.stream.Collectors;
|
|
*/
|
|
*/
|
|
@RestController
|
|
@RestController
|
|
@RequestMapping("/service/scene/sceneMarkShape")
|
|
@RequestMapping("/service/scene/sceneMarkShape")
|
|
|
|
+@Slf4j
|
|
public class SceneMarkShapeController extends BaseController
|
|
public class SceneMarkShapeController extends BaseController
|
|
{
|
|
{
|
|
@Value("${queue.scene.yolov5-detect-queue}")
|
|
@Value("${queue.scene.yolov5-detect-queue}")
|
|
@@ -113,4 +123,45 @@ public class SceneMarkShapeController extends BaseController
|
|
return ResultData.ok(sceneMarkShapeService.save(param));
|
|
return ResultData.ok(sceneMarkShapeService.save(param));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ /**
|
|
|
|
+ * 保存或者修改JSON
|
|
|
|
+ */
|
|
|
|
+ @PostMapping("/editLabel")
|
|
|
|
+ public ResultData editLabel(@RequestParam(value = "num") String num,@RequestParam(value = "imgPath") String imgPath,@RequestParam("file") MultipartFile file) throws IOException {
|
|
|
|
+ log.info("进入editLabel---num{},imgPath{}",num,imgPath);
|
|
|
|
+ SceneMarkShape shape = sceneMarkShapeService.findByNumAndImagePath(num, imgPath);
|
|
|
|
+ if (ObjectUtil.isNotNull(shape)){
|
|
|
|
+ String uuid = UUID.randomUUID().toString();
|
|
|
|
+ String fileName = file.getOriginalFilename();
|
|
|
|
+ String extName = cn.hutool.core.io.FileUtil.extName(fileName);
|
|
|
|
+ String tempFileName = uuid + "." + extName;
|
|
|
|
+ String srcPath = ConstantFilePath.SCENE_V4_PATH + num + "/markShapes/" + tempFileName;
|
|
|
|
+ File tempFile = new File(srcPath);
|
|
|
|
+ if(!tempFile.getParentFile().exists()){
|
|
|
|
+ tempFile.getParentFile().mkdirs();
|
|
|
|
+ }
|
|
|
|
+ file.transferTo(tempFile);
|
|
|
|
+
|
|
|
|
+ List<String> s = FileUtil.readUtf8Lines(tempFile);
|
|
|
|
+ List<JSONObject> shapeJsons=new ArrayList<>();
|
|
|
|
+ //转换labelimg标注处理的结果
|
|
|
|
+ log.info("转换labelimg标注处理的结果开始");
|
|
|
|
+ for (String s1 : s) {
|
|
|
|
+ int[] ints = ConverxyUtil.centerWh2xyxy(s1, 4096,2048);
|
|
|
|
+ String[] s2 = s1.split(" ");
|
|
|
|
+ JSONObject shapeJson=new JSONObject();
|
|
|
|
+ shapeJson.put("bbox",ints);
|
|
|
|
+ shapeJson.put("color",ConverxyUtil.getColor(s2[0]));
|
|
|
|
+ shapeJson.put("label",s1);
|
|
|
|
+ shapeJson.put("category",ConverxyUtil.getLabelVal(s2[0]));
|
|
|
|
+ shapeJson.put("score",0);
|
|
|
|
+ shapeJsons.add(shapeJson);
|
|
|
|
+ }
|
|
|
|
+ log.info("转换labelimg标注处理的结果结束,{}",shapeJsons);
|
|
|
|
+ shape.setShapes(shapeJsons);
|
|
|
|
+ return ResultData.ok(sceneMarkShapeService.updateById(shape));
|
|
|
|
+ }else {
|
|
|
|
+ return ResultData.error(ErrorCode.NOT_RECORD);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|