whycxzp
2025-03-22 ff37b865449043cdb5a8d0e7d56916da31b8a8f4
海康摄像头温度点位接口
2个文件已修改
2个文件已添加
96 ■■■■ 已修改文件
src/main/java/com/whyc/controller/HikTempController.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/dto/Point.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/dto/TempPoint.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/HikTempService.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/controller/HikTempController.java
@@ -6,6 +6,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.io.IOException;
@@ -19,7 +20,7 @@
    private HikTempService service;
    @GetMapping("getTempPoint")
    public Response getTempPoint(String ip) throws IOException, InterruptedException {
    public Response getTempPoint(@RequestParam String ip) throws IOException, InterruptedException {
        return service.getTempPoint(ip);
    }
src/main/java/com/whyc/dto/Point.java
New file
@@ -0,0 +1,39 @@
package com.whyc.dto;
/**
 * 坐标点,用于定义极值温度的x,y坐标
 */
public class Point {
    private Integer x;
    private Integer y;
    public Point(Integer x, Integer y) {
        this.x = x;
        this.y = y;
    }
    public Integer getX() {
        return x;
    }
    public void setX(Integer x) {
        this.x = x;
    }
    public Integer getY() {
        return y;
    }
    public void setY(Integer y) {
        this.y = y;
    }
    @Override
    public String toString() {
        return "Point{" +
                "x=" + x +
                ", y=" + y +
                '}';
    }
}
src/main/java/com/whyc/dto/TempPoint.java
New file
@@ -0,0 +1,35 @@
package com.whyc.dto;
import java.util.List;
/**
 * 温度坐标,用于定义极值温度的x,y坐标
 */
public class TempPoint {
    private Float temp;
    private List<Point> points;
    public Float getTemp() {
        return temp;
    }
    public void setTemp(Float temp) {
        this.temp = temp;
    }
    public List<Point> getPoints() {
        return points;
    }
    public void setPoints(List<Point> points) {
        this.points = points;
    }
    @Override
    public String toString() {
        return "TempPoint{" +
                "temp=" + temp +
                ", points=" + points +
                '}';
    }
}
src/main/java/com/whyc/service/HikTempService.java
@@ -5,11 +5,8 @@
import com.whyc.dto.Point;
import com.whyc.dto.Response;
import com.whyc.dto.TempPoint;
import com.whyc.hik.ChannelParamCfg;
import com.whyc.hik.Commom.osSelect;
import com.whyc.hik.DevManager;
import com.whyc.hik.NetSDKDemo.HCNetSDK;
import com.whyc.hik.SdkSysCfg;
import org.springframework.stereotype.Service;
import java.io.FileOutputStream;
@@ -88,7 +85,7 @@
        m_strJpegWithAppendData.dwJpegPicLen = 2*1024*1024;
        m_strJpegWithAppendData.dwP2PDataLen = 2*1024*1024;
        m_strJpegWithAppendData.write();
        Map<String, TempPoint> tempPointMap;
        Map<String, Object> tempPointMap;
        boolean resBoolean = hCNetSDK.NET_DVR_CaptureJPEGPicture_WithAppendData(lUserID, 2, m_strJpegWithAppendData);
        if (resBoolean) {
            System.out.println("抓图成功");
@@ -105,7 +102,7 @@
            fos.write(pP2PDataBuff.getByteArray(0, m_strJpegWithAppendData.dwP2PDataLen), 0, m_strJpegWithAppendData.dwP2PDataLen);
            //获取红外结果并解析
            tempPointMap = analyzeData(m_strJpegWithAppendData.dwP2PDataLen, cFilename, cFilename2);
            tempPointMap = analyzeData(m_strJpegWithAppendData, cFilename, cFilename2);
        }else {
            System.out.printf("抓热图失败:%s",hCNetSDK.NET_DVR_GetLastError());
            return new Response().set(1,false,String.format("抓热图失败:%s",hCNetSDK.NET_DVR_GetLastError()));
@@ -264,14 +261,16 @@
        return true;
    }
    public Map<String,TempPoint> analyzeData(int dwP2PDataLen, String cFilename, String cFilename2) throws IOException {
        Map<String,TempPoint> tempMap = new HashMap<String, TempPoint>();
    public Map<String,Object> analyzeData(HCNetSDK.NET_DVR_JPEGPICTURE_WITH_APPENDDATA m_strJpegWithAppendData, String cFilename, String cFilename2) throws IOException {
        Map<String,Object> tempMap = new LinkedHashMap<>();
        // 打开本地保存的文件
        String inputFilename = cFilename;
        String outputFilename = cFilename2;
        int m_AnalysisHotPic_W = 384; // 根据抓热图接口返回的图像宽dwJpegPicWidth进行赋值
        int m_AnalysisHotPic_H = 288; // 根据抓热图接口返回的图像高dwJpegPicHeight进行赋值
        //int m_AnalysisHotPic_W = 384; // 根据抓热图接口返回的图像宽dwJpegPicWidth进行赋值
        //int m_AnalysisHotPic_H = 288; // 根据抓热图接口返回的图像高dwJpegPicHeight进行赋值
        int m_AnalysisHotPic_W = m_strJpegWithAppendData.dwJpegPicWidth; // 根据抓热图接口返回的图像宽dwJpegPicWidth进行赋值
        int m_AnalysisHotPic_H = m_strJpegWithAppendData.dwJpegPicHeight; // 根据抓热图接口返回的图像高dwJpegPicHeight进行赋值
        int bufSize = m_AnalysisHotPic_H * m_AnalysisHotPic_W * 4;
        try (RandomAccessFile datafilefp = new RandomAccessFile(inputFilename, "r");
@@ -347,6 +346,8 @@
            System.out.println("Min Temperature: " + minTempPoint);
            System.out.println("Max Temperature: " + maxTempPoint);
            tempMap.put("pixelX",m_strJpegWithAppendData.dwJpegPicWidth);
            tempMap.put("pixelY",m_strJpegWithAppendData.dwJpegPicHeight);
            tempMap.put("minTempPoint",minTempPoint);
            tempMap.put("maxTempPoint",maxTempPoint);
        }