diff --git a/pom.xml b/pom.xml
index d4a76bb..efc72ac 100644
--- a/pom.xml
+++ b/pom.xml
@@ -171,11 +171,11 @@
1.0.0
compile
-
- org.springframework.data
- spring-data-redis
- 2.7.17
-
+
+
+
+
+
org.springframework.boot
diff --git a/src/main/java/com/inspect/simulator/controller/InfraredController.java b/src/main/java/com/inspect/simulator/controller/InfraredController.java
index 1d0aa1e..b8c9985 100644
--- a/src/main/java/com/inspect/simulator/controller/InfraredController.java
+++ b/src/main/java/com/inspect/simulator/controller/InfraredController.java
@@ -48,6 +48,7 @@ public class InfraredController {
@PostMapping("/capturePicture")
@ResponseBody
public AjaxResult capturePicture(@RequestBody Coordinate coordinate) {
+
return hikVisionService.analyzeInfrared(coordinate);
}
diff --git a/src/main/java/com/inspect/simulator/domain/Infrared/Coordinate.java b/src/main/java/com/inspect/simulator/domain/Infrared/Coordinate.java
index 17bbc39..1f77136 100644
--- a/src/main/java/com/inspect/simulator/domain/Infrared/Coordinate.java
+++ b/src/main/java/com/inspect/simulator/domain/Infrared/Coordinate.java
@@ -17,15 +17,11 @@ public class Coordinate {
private String filePath;
- //矩阵温度坐标
- private Integer[][] matrixCoordinate;
-
- //点温度坐标
- private Integer[][] pointCoordinate;
-
//图片宽
private Integer imgWidth;
//图片高
private Integer imgHeight;
+
+ private Coordinate[] coordinates;
}
diff --git a/src/main/java/com/inspect/simulator/service/impl/HikVisionServiceImpl.java b/src/main/java/com/inspect/simulator/service/impl/HikVisionServiceImpl.java
index edd175a..7e4644f 100644
--- a/src/main/java/com/inspect/simulator/service/impl/HikVisionServiceImpl.java
+++ b/src/main/java/com/inspect/simulator/service/impl/HikVisionServiceImpl.java
@@ -40,7 +40,7 @@ import java.util.Date;
import java.util.List;
/**
- * 海康威视测试服务类
+ * 海康威视测试服务类
*/
@Service
public class HikVisionServiceImpl implements HikVisionService {
@@ -107,7 +107,6 @@ public class HikVisionServiceImpl implements HikVisionService {
}
-
@Override
public AjaxResult cameraHongWaiHk(Camera camera) {
//红外图谱信息
@@ -171,7 +170,7 @@ public class HikVisionServiceImpl implements HikVisionService {
System.out.println("获取数据");
FileOutputStream pic;
try {
- String filename = picPath +"/pic/hw";
+ String filename = picPath + "/pic/hw/";
//判断路径是否存在
File filePath = new File(filename);
if (!filePath.exists()) {
@@ -394,7 +393,7 @@ public class HikVisionServiceImpl implements HikVisionService {
// System.out.println();
// }
//绘制框选标识
- if(coordinate!= null) {
+ if (coordinate != null) {
ImageOverlays(coordinate, infraredInfo);
}
} else {
@@ -407,14 +406,14 @@ public class HikVisionServiceImpl implements HikVisionService {
}
//点测温
- public InfraredInfo PointTemperatureShow(Coordinate coordinate,short width, short height,float[][] temperatureMatrix ){
+ public InfraredInfo PointTemperatureShow(Coordinate coordinate, short width, short height, float[][] temperatureMatrix) {
InfraredInfo infraredInfo = new InfraredInfo();
// 获取指定坐标的温度
if (ObjectUtil.isNotEmpty(coordinate.getFirstX())) {
//比例缩放像素 获取底图温度值
- double xMultiple= (coordinate.getImgWidth().doubleValue()/width)* 100 / 100.0;
- double yMultiple= (coordinate.getImgHeight().doubleValue()/height)* 100 / 100.0;
+ double xMultiple = (coordinate.getImgWidth().doubleValue() / width) * 100 / 100.0;
+ double yMultiple = (coordinate.getImgHeight().doubleValue() / height) * 100 / 100.0;
int x = (int) (coordinate.getFirstX() / xMultiple);
int y = (int) (coordinate.getFirstY() / yMultiple);
@@ -432,14 +431,14 @@ public class HikVisionServiceImpl implements HikVisionService {
}
//框选温度值计算
- public InfraredInfo matrixTemperatureShow(Coordinate coordinate,short width, short height, float[][] temperatureMatrix ){
+ public InfraredInfo matrixTemperatureShow(Coordinate coordinate, short width, short height, float[][] temperatureMatrix) {
InfraredInfo infraredInfo = new InfraredInfo();
//存储框选矩阵温度值
List values = new ArrayList<>();
if (ObjectUtil.isNotEmpty(coordinate.getFirstX()) && ObjectUtil.isNotEmpty(coordinate.getSecondX())) {
//倍数计算
- double xMultiple= (coordinate.getImgWidth().doubleValue()/width)* 100 / 100.0;
- double yMultiple= (coordinate.getImgHeight().doubleValue()/height)* 100 / 100.0;
+ double xMultiple = (coordinate.getImgWidth().doubleValue() / width) * 100 / 100.0;
+ double yMultiple = (coordinate.getImgHeight().doubleValue() / height) * 100 / 100.0;
//比例缩放像素 获取底图温度值
int x1 = (int) (coordinate.getFirstX() / xMultiple);
@@ -531,30 +530,17 @@ public class HikVisionServiceImpl implements HikVisionService {
//图片标注
- public String ImageOverlays( Coordinate coordinate ,InfraredInfo infraredInfo) {
- Integer[][] pointCoordinate= coordinate.getPointCoordinate();
- Integer[][] matrixCoordinate =coordinate.getMatrixCoordinate();
-// //点坐标
-// Integer[][] pointCoordinate = {
-// {10, 20},
-// {90, 40},
-// {190, 130}
-// };
-// //矩阵坐标
-// Integer[][] matrixCoordinate = {
-// {11, 20},
-// {90, 40},
-// {50, 10},
-// {200, 190}
-// };
+ public String ImageOverlays(Coordinate coordinate, InfraredInfo infraredInfo) {
+
+ Coordinate[] coordinates = coordinate.getCoordinates();
+
Date date = new Date();
SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss");
String markPicName = sf.format(date);
// 图片路径(请替换为实际路径)
String imagePath = coordinate.getFilePath();
// String imagePath = picPath+"/pic/hw/20250409141218PLAY_CELLPHONE_.jpg";
- String outputPath = picPath+"/pic/hw/mark/"+markPicName+".jpg";
-
+ String outputPath = picPath + "/pic/hw/mark/" + markPicName + ".jpg";
try {
// 加载原始图片
BufferedImage originalImage = ImageIO.read(new File(imagePath));
@@ -576,19 +562,20 @@ public class HikVisionServiceImpl implements HikVisionService {
// 设置标注样式
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
- Font font = new Font("Arial", Font.BOLD, 12);
- g2d.setFont(font);
- if ( pointCoordinate !=null && pointCoordinate.length >0) {
- // 标注点坐标
- g2d.setColor(Color.GREEN);
- for (Integer[] point : pointCoordinate) {
- int x = point[0];
- int y = point[1];
+ Font font = new Font("微软雅黑", Font.BOLD, 17);
+
+ for (Coordinate c : coordinates) {
+
+ if (c.getFirstX() != null && c.getFirstY() != null && c.getSecondX() == null && c.getSecondY() == null) {
+ g2d.setFont(font);
+ // 标注点坐标
+ g2d.setColor(Color.GREEN);
+ int x = c.getFirstX();
+ int y = c.getFirstY();
// 确保坐标在图片范围内
if (x >= 0 && x < originalImage.getWidth() &&
y >= 0 && y < originalImage.getHeight()) {
-
// 绘制点(用实心圆表示)
g2d.fillOval(x - 3, y - 3, 6, 6);
coordinate.setFirstX(x);
@@ -598,20 +585,14 @@ public class HikVisionServiceImpl implements HikVisionService {
g2d.drawString("(" + String.format("%.2f", drawStringPoint.getPointTemperature()) + ")", x + 8, y - 8);
}
}
- }
- if ( matrixCoordinate !=null && matrixCoordinate.length >1 && matrixCoordinate.length % 2 == 0) {
- // 标注矩形(每两个点确定一个矩形)
- g2d.setColor(Color.RED);
- for (int i = 0; i < matrixCoordinate.length; i += 2) {
- if (i + 1 >= matrixCoordinate.length) break;
-
- Integer[] point1 = matrixCoordinate[i];
- Integer[] point2 = matrixCoordinate[i + 1];
- int x1 = point1[0];
- int y1 = point1[1];
- int x2 = point2[0];
- int y2 = point2[1];
+ if (c.getSecondX() != null && c.getSecondY() != null) {
+ // 标注矩形(每两个点确定一个矩形)
+ g2d.setColor(Color.RED);
+ int x1 = c.getFirstX();
+ int y1 = c.getFirstY();
+ int x2 = c.getSecondX();
+ int y2 = c.getSecondY();
// 确保坐标在图片范围内
if (x1 >= 0 && x1 < originalImage.getWidth() && y1 >= 0 && y1 < originalImage.getHeight() &&
@@ -629,17 +610,16 @@ public class HikVisionServiceImpl implements HikVisionService {
coordinate.setFirstY(y1);
coordinate.setSecondX(x2);
coordinate.setSecondY(y2);
- InfraredInfo drawStringMatrix = matrixTemperatureShow(coordinate, infraredInfo.getMatrixWidth(), infraredInfo.getMatrixHeight(),infraredInfo.getTemperatureMatrix());
+ InfraredInfo drawStringMatrix = matrixTemperatureShow(coordinate, infraredInfo.getMatrixWidth(), infraredInfo.getMatrixHeight(), infraredInfo.getTemperatureMatrix());
drawStringMatrix.getFrameAverage();
-
// 添加矩形标签
- g2d.drawString("Age:" + String.format("%.2f", drawStringMatrix.getFrameAverage()) +
- "Max:" + String.format("%.2f", drawStringMatrix.getFrameMax()) +
- "Min:" + String.format("%.2f", drawStringMatrix.getFrameMin()) + (i / 2 + 1), rectX + 5, rectY + 15);
+ g2d.drawString("平均温度:" + String.format("%.2f", drawStringMatrix.getFrameAverage()) +
+ "最大温度:" + String.format("%.2f", drawStringMatrix.getFrameMax()) +
+ "最小温度:" + String.format("%.2f", drawStringMatrix.getFrameMin()), rectX + 5, rectY + 15);
}
}
- g2d.dispose();
}
+ g2d.dispose();
// 保存标注后的图片
File outputFile = new File(outputPath);
// 确保输出目录存在
@@ -660,10 +640,10 @@ public class HikVisionServiceImpl implements HikVisionService {
@Override
public AjaxResult uavInfrared(String apiUrl, String imageUrl, String coordinate) {
apiUrl = "http://192.168.3.81:1000";
- imageUrl="http://192.168.3.81:8080/20230112/t001.jpg";
- coordinate="[[0, 0, 100, 100], [150, 150, 300, 300]]";
+ imageUrl = "http://192.168.3.81:8080/20230112/t001.jpg";
+ coordinate = "[[0, 0, 100, 100], [150, 150, 300, 300]]";
- InfraredInfo infraredInfo =new InfraredInfo();
+ InfraredInfo infraredInfo = new InfraredInfo();
HttpURLConnection connection = null;
try {
// 1. 创建URL对象
@@ -712,7 +692,7 @@ public class HikVisionServiceImpl implements HikVisionService {
while ((line = reader.readLine()) != null) {
response.append(line);
}
- String infraredData= response.toString();
+ String infraredData = response.toString();
}
} else {
return AjaxResult.error("请求失败,HTTP状态码: " + responseCode);
@@ -725,7 +705,7 @@ public class HikVisionServiceImpl implements HikVisionService {
connection.disconnect();
}
}
- return AjaxResult.success(infraredInfo);
+ return AjaxResult.success(infraredInfo);
}
private static void addFormField(PrintWriter writer, String boundary,