Commit 36b7bc05 by 陈皓

.

parent 9b3f9b97
......@@ -7,7 +7,7 @@ redis.password:
db:
cloud:
username: root
password: Dk2019!23456
password: ZqTestDB#2024#
driver-class-name: com.mysql.cj.jdbc.Driver
url:
cloud: jdbc:mysql://119.45.183.210:13308/image?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
......
......@@ -7,7 +7,7 @@ redis.password:
db:
cloud:
username: root
password: Dk2019!23456
password: ZqTestDB#2024#
driver-class-name: com.mysql.cj.jdbc.Driver
url:
cloud: jdbc:mysql://119.45.183.210:13308/image?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
......
......@@ -10,7 +10,6 @@ import com.zq.imgproc.vo.OptimizationVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
......@@ -51,7 +50,7 @@ public class ApiController {
}
@ApiOperation("图片优化")
@PostMapping("/imageOptimization")
@AnonymousPostMapping("/imageOptimization")
public ResultVo<OptimizationVO> imageOptimization(@RequestBody OptimizationReq req) throws IOException {
AssertUtils.hasText(req.getFileContent(), "缺少文件内容");
AssertUtils.hasText(req.getFileName(), "缺少文件名");
......
......@@ -2,6 +2,7 @@ package com.zq.imgproc.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zq.imgproc.entity.ImageBatch;
import org.springframework.stereotype.Repository;
/**
* <p>
......@@ -11,5 +12,6 @@ import com.zq.imgproc.entity.ImageBatch;
* @author chenhao
* @since 2023/11/29
*/
@Repository
public interface ImageBatchDao extends BaseMapper<ImageBatch> {
}
......@@ -6,10 +6,12 @@ import cn.hutool.core.codec.Base64Encoder;
import cn.hutool.core.io.FileUtil;
import com.zq.common.utils.UuidUtils;
import com.zq.common.vo.ResultVo;
import com.zq.imgproc.utils.BendUtil;
import com.zq.imgproc.utils.Deskew;
import com.zq.imgproc.utils.ImageUtil;
import com.zq.imgproc.utils.RemoveBlackUtil2;
import com.zq.imgproc.vo.ApiDetectionVO;
import com.zq.imgproc.vo.BendResult;
import com.zq.imgproc.vo.OptimizationReq;
import com.zq.imgproc.vo.OptimizationVO;
import lombok.RequiredArgsConstructor;
......@@ -69,9 +71,9 @@ public class ApiService {
// 检测图片的黑边
vo.setBlack(ImageUtil.blackDetection2(src));
// 图片弯曲检测
// BendResult bendResult = BendUtil.getBendResult(filePath);
// vo.setBend(bendResult.getConfidence());
vo.setBend(0.0);
BendResult bendResult = BendUtil.getBendResult(filePath);
vo.setBend(bendResult.getConfidence());
// vo.setBend(0.0);
FileUtil.del(filePath);
} catch (Exception e) {
log.error("图片检测出现异常", e);
......@@ -171,11 +173,11 @@ public class ApiService {
String blackUrl = savePath + "(1)removeBlack." + ext;
Mat aMat = Imgcodecs.imread(newPath);
if (ImageUtil.blackDetection(aMat)) {
res.setRemoveBlack(true);
res.setRemoveBlackChanged(true);
RemoveBlackUtil2.remove(newPath, blackUrl);
newPath = blackUrl;
} else {
res.setRemoveBlack(false);
res.setRemoveBlackChanged(false);
}
aMat.release();
log.info("黑边处理消耗的时间【{}】", System.currentTimeMillis() - start);
......@@ -207,7 +209,7 @@ public class ApiService {
res.setOriginalBrightnessVal(brightness);
// 亮度异常执行亮度矫正
if (brightness < 130 || brightness > 230) {
res.setBrightness(true);
res.setBrightnessChanged(true);
// 计算亮度调整值
double alpha = 180 / brightness;
// 执行亮度调整
......@@ -221,7 +223,7 @@ public class ApiService {
adjustedImage.release();
grayImage.release();
} else {
res.setBrightness(false);
res.setBrightnessChanged(false);
res.setBrightnessVal(0);
}
cMat.release();
......@@ -233,23 +235,23 @@ public class ApiService {
double tenengrad = ImageUtil.tenengrad(dMat);
res.setOriginalClarityVal(tenengrad);
if (tenengrad < 2.5) {
res.setClarity(true);
res.setClarityChanged(true);
Mat unsharpMaskingMat = ImageUtil.unsharpMasking(dMat);
// 保存调整后的图像
Imgcodecs.imwrite(newPath, unsharpMaskingMat);
res.setClarityVal(ImageUtil.tenengrad(unsharpMaskingMat));
unsharpMaskingMat.release();
} else {
res.setClarity(false);
res.setClarityChanged(false);
res.setClarityVal(0);
}
dMat.release();
log.info("图片清晰度所需时间【{}】", System.currentTimeMillis() - start);
res.setFilename(filename);
res.setFileName(filename);
res.setFileContent(Base64Encoder.encode(FileUtil.readBytes(newPath)));
res.setCorrect(false);
res.setCorrectChanged(false);
return res;
}
......
......@@ -452,11 +452,11 @@ public class ImgProcService {
String blackUrl = savePath + "(1)." + ext;
Mat aMat = Imgcodecs.imread(newPath);
if (ImageUtil.blackDetection(aMat)) {
res.setRemoveBlack(true);
res.setRemoveBlackChanged(true);
RemoveBlackUtil2.remove(newPath, blackUrl);
newPath = blackUrl;
} else {
res.setRemoveBlack(false);
res.setRemoveBlackChanged(false);
}
aMat.release();
log.info("黑边处理消耗的时间【{}】", System.currentTimeMillis() - start);
......@@ -488,7 +488,7 @@ public class ImgProcService {
res.setOriginalBrightnessVal(brightness);
// 亮度异常执行亮度矫正
if (brightness < 100 || brightness > 500) {
res.setBrightness(true);
res.setBrightnessChanged(true);
// 计算亮度调整值
double alpha = 300 / brightness;
// 执行亮度调整
......@@ -502,7 +502,7 @@ public class ImgProcService {
adjustedImage.release();
grayImage.release();
} else {
res.setBrightness(false);
res.setBrightnessChanged(false);
res.setBrightnessVal(0);
}
cMat.release();
......@@ -514,23 +514,23 @@ public class ImgProcService {
double laplacianScore = ImageUtil.imageSharpnessDetector(dMat);
res.setOriginalClarityVal(laplacianScore);
if (laplacianScore < 500) {
res.setClarity(true);
res.setClarityChanged(true);
Mat unsharpMaskingMat = ImageUtil.unsharpMasking(dMat);
// 保存调整后的图像
Imgcodecs.imwrite(newPath, unsharpMaskingMat);
res.setClarityVal(ImageUtil.imageSharpnessDetector(unsharpMaskingMat));
unsharpMaskingMat.release();
} else {
res.setClarity(false);
res.setClarityChanged(false);
res.setClarityVal(0);
}
dMat.release();
log.info("图片清晰度所需时间【{}】", System.currentTimeMillis() - start);
res.setFilename(filename);
res.setFileName(filename);
res.setFileContent(Base64Encoder.encode(FileUtil.readBytes(newPath)));
res.setCorrect(false);
res.setCorrectChanged(false);
return res;
......
......@@ -60,7 +60,7 @@ public class Deskew {
double[] line = lines.get(i, 0);
Imgproc.line(mat, new Point(line[0], line[1]), new Point(line[2], line[3]), color,3, LINE_AA);
}
Imgcodecs.imwrite("C:\\Users\\11419\\Desktop\\test\\test1.png", mat);
// Imgcodecs.imwrite("C:\\Users\\11419\\Desktop\\test\\test1.png", mat);
// 计算倾斜角度
List<Integer> angelList = new ArrayList<>();
......
......@@ -74,7 +74,7 @@ public class Deskew2 {
double[] line = lines.get(i, 0);
Imgproc.line(mat, new Point(line[0], line[1]), new Point(line[2], line[3]), color,3, LINE_AA);
}
Imgcodecs.imwrite("C:\\Users\\11419\\Desktop\\test\\test1.png", mat);
// Imgcodecs.imwrite("C:\\Users\\11419\\Desktop\\test\\test1.png", mat);
// 计算倾斜角度
List<Integer> angelList = new ArrayList<>();
......
......@@ -24,10 +24,10 @@ public class OptimizationVO {
private String fileContent;
@ApiModelProperty("文件名称")
private String filename;
private String fileName;
@ApiModelProperty("是否经过亮度调整")
private boolean isBrightness;
private boolean brightnessChanged;
@ApiModelProperty("图片原始平均亮度值")
private double originalBrightnessVal;
......@@ -36,7 +36,7 @@ public class OptimizationVO {
private double brightnessVal;
@ApiModelProperty("是否经过清晰度调整")
private boolean isClarity;
private boolean clarityChanged;
@ApiModelProperty("图片原始清晰度值")
private double originalClarityVal;
......@@ -45,12 +45,12 @@ public class OptimizationVO {
private double clarityVal;
@ApiModelProperty("是否经过黑边处理")
private boolean isRemoveBlack;
private boolean removeBlackChanged;
@ApiModelProperty("图片纠偏的角度,纠偏出错返回-1")
private double deskewAngel;
@ApiModelProperty("图片是否经过弯曲矫正")
private boolean isCorrect;
private boolean correctChanged;
}
......@@ -89,13 +89,13 @@ ip:
# deskewpy: /opt/services/tianjin-backend/lib/correct.py
# 172.28.1.171
#imgconfig:
# opencv: /opt/tianjin/lib/opencv_java460.so
# deskew: /opt/tianjin/lib/Deskew/Bin/deskew
# deskewpy: /opt/tianjin/lib/correct.py
imgconfig:
opencv: /opt/tianjin/lib/opencv_java460.so
deskew: /opt/tianjin/lib/Deskew/Bin/deskew
deskewpy: /opt/tianjin/lib/correct.py
# 本地
imgconfig:
opencv: D:/project/image-backend/config/lib/opencv_java460.dll
deskew: C:/Users/11419/Desktop/Deskew/Bin/deskew.exe
deskewpy: D:/project/imgproc/lib/correct.py
\ No newline at end of file
#imgconfig:
# opencv: D:/project/image-backend/config/lib/opencv_java460.dll
# deskew: C:/Users/11419/Desktop/Deskew/Bin/deskew.exe
# deskewpy: D:/project/imgproc/lib/correct.py
\ No newline at end of file
package com.zq.im.modules.im.controller;
import cn.hutool.core.codec.Base64;
import cn.hutool.core.codec.Base64Decoder;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.io.FileUtil;
import com.zq.im.modules.im.req.ImageReq;
import com.zq.im.modules.im.service.ImgProcService;
import com.zq.im.modules.im.vo.DetectionResVo;
import com.zq.im.modules.im.vo.OptimizationVO;
import com.zq.im.modules.system.vo.ResultVo;
import com.zq.im.utils.AssertUtils;
import com.zq.im.utils.V1Demo;
import io.swagger.annotations.Api;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
/**
* <p>
......@@ -38,8 +45,8 @@ public class ImgProcController {
return ResultVo.success(service.pictureQualityDetection(req));
}
@PostMapping(value = "/demo/{filename}")
public ResultVo<?> demo(@PathVariable String filename) {
@GetMapping(value = "/demo1/{filename}")
public ResultVo<?> demo1(@PathVariable String filename) {
File file = FileUtil.file("/data/img/" + filename);
if (!file.exists()) {
return ResultVo.fail("文件不存在!");
......@@ -47,12 +54,38 @@ public class ImgProcController {
if (!FileUtil.extName(file).equals("jpg") && !FileUtil.extName(file).equals("png")) {
return ResultVo.fail("暂不支持文件类型!");
}
ImageReq req = ImageReq.builder()
.fileName(filename)
.fileContent(Base64.encode(file))
.build();
Map<String, Object> params = new HashMap<>(2);
params.put("filename", filename);
params.put("fileContent", Base64.encode(file));
return ResultVo.success(service.pictureQualityDetection(req));
V1Demo.ApiInfo apiInfo = V1Demo.getApiInfo();
String sessionKey = apiInfo.getKey();
Object o = V1Demo.doPost("pictureQualityDetection", params, sessionKey);
DetectionResVo convert = Convert.convert(DetectionResVo.class, o);
return ResultVo.success(convert);
}
@GetMapping(value = "/demo2/{filename}")
public ResultVo<?> demo2(@PathVariable String filename) {
File file = FileUtil.file("/data/img/" + filename);
if (!file.exists()) {
return ResultVo.fail("文件不存在!");
}
if (!FileUtil.extName(file).equals("jpg") && !FileUtil.extName(file).equals("png")) {
return ResultVo.fail("暂不支持文件类型!");
}
Map<String, Object> params = new HashMap<>(2);
params.put("filename", "8.jpg");
params.put("fileContent", Base64.encode(file));
V1Demo.ApiInfo apiInfo = V1Demo.getApiInfo();
String sessionKey = apiInfo.getKey();
Object o = V1Demo.doPost("imageOptimization", params, sessionKey);
OptimizationVO convert = Convert.convert(OptimizationVO.class, o);
FileUtil.writeBytes(Base64Decoder.decode(convert.getFileContent()), FileUtil.file("/data/img/(test)" + filename));
return ResultVo.success();
}
}
......@@ -24,10 +24,10 @@ public class OptimizationVO {
private String fileContent;
@ApiModelProperty("文件名称")
private String filename;
private String fileName;
@ApiModelProperty("是否经过亮度调整")
private boolean isBrightness;
private boolean brightnessChanged;
@ApiModelProperty("图片原始平均亮度值")
private double originalBrightnessVal;
......@@ -36,7 +36,7 @@ public class OptimizationVO {
private double brightnessVal;
@ApiModelProperty("是否经过清晰度调整")
private boolean isClarity;
private boolean clarityChanged;
@ApiModelProperty("图片原始清晰度值")
private double originalClarityVal;
......@@ -45,12 +45,12 @@ public class OptimizationVO {
private double clarityVal;
@ApiModelProperty("是否经过黑边处理")
private boolean isRemoveBlack;
private boolean removeBlackChanged;
@ApiModelProperty("图片纠偏的角度,纠偏出错返回-1")
private double deskewAngel;
@ApiModelProperty("图片是否经过弯曲矫正")
private boolean isCorrect;
private boolean correctChanged;
}
package com.zq.im.utils;
import cn.hutool.core.codec.Base64;
import cn.hutool.core.codec.Base64Decoder;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
......@@ -13,6 +14,7 @@ import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.zq.im.modules.im.vo.OptimizationVO;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
......@@ -38,8 +40,8 @@ public class V1Demo {
private static final Map<String, ApiInfo> API_INFO_MAP = new HashMap<>();
private static final String APP_ID = "ec3f54b398e64fbeb9ed00bb0144a91b";
private static final String APP_SECRET = "4c0d6c2a99e541c8a1affc3c8d8dcddb";
private static final String URL = "http://127.0.0.1:9900/api/v1/action";
// private static final String URL = "http://172.28.1.171:8855/api/v1/action";
// private static final String URL = "http://127.0.0.1:8855/api/v1/action";
private static final String URL = "http://172.28.1.171:8855/api/v1/action";
public static ApiInfo getApiInfo() {
ApiInfo apiInfo = API_INFO_MAP.get(APP_ID);
......@@ -166,11 +168,17 @@ public class V1Demo {
Map<String, Object> params = new HashMap<>(2);
params.put("filename", "8.jpg");
params.put("fileContent", Base64.encode(FileUtil.file("C:\\Users\\11419\\Desktop\\图片检测\\test\\8.jpg")));
for (int i = 0; i < 500; i++) {
Object o = doPost("pictureQualityDetection", params, sessionKey);
DetectionResVo convert = Convert.convert(DetectionResVo.class, o);
System.out.println(JSONUtil.toJsonStr(convert));
}
// for (int i = 0; i < 1; i++) {
// Object o = doPost("pictureQualityDetection", params, sessionKey);
// DetectionResVo convert = Convert.convert(DetectionResVo.class, o);
// System.out.println(JSONUtil.toJsonStr(convert));
// }
Object o = doPost("imageOptimization", params, sessionKey);
OptimizationVO convert = Convert.convert(OptimizationVO.class, o);
FileUtil.writeBytes(Base64Decoder.decode(convert.getFileContent()), FileUtil.file("C:\\Users\\11419\\Desktop\\图片检测\\test\\8(1).jpg"));
System.out.println(o);
}
@Data
......
server:
port: 9900
port: 8855
tomcat:
max-http-form-post-size: -1
#配置数据源
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment