吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1635|回复: 4
收起左侧

[求助] 海康热成像 获取已设置点的点或区域的温度

[复制链接]
ZsomebodyZ 发表于 2023-3-12 17:33
本帖最后由 侃遍天下无二人 于 2023-3-12 18:13 编辑

下面是海康热成像SDK  里面的接口
获取 设备的配置信息 NET_DVR_SetSTDConfig
函 数: BOOL NET_DVR_SetSTDConfig(LONG lUserID, DWORD dwCommand, LPNET_DVR_STD_CONFIG
lpConfigParam)
参 数: [in]lUserID
[in]dwCommand
[in&out]lpConfigParam
用户 ID 号,NET_DVR_Login_V40 的返回值
设备配置命令,详见表 5.42
配置输入输出参数,不同的配置功能对应不同的输入输出参数,
详见表 5.43
返回值: TRUE 表示成功,FALSE 表示失败。接口返回失败请调用 NET_DVR_GetLastError 获取错误码,通
过错误码判断出错原因。
说 明:
设置配置参数时,lpConfigParam 结构体里面的 lpOutBuffer 无效,设为 NULL。对于不同的配置功
能(dwCommand),lpConfigParam 中的 lpCondBuffer、lpInBuffer 分别对应不同的内容,具体如
表 5.43 所示。
 热成像相关功能配置只支持在热成像通道上配置。热成像重载云台和热成像中载云台设备,
有两个通道,第一个通道为可见光通道,第二个通道为热成像通道;热成像单目筒机只有一
个通道,为热成像通道。
表 5.42 设置参数配置命令
dwCommand 宏定义 含义 宏定义值
NET_DVR_SET_FIREDETECTION 设置火点检测参数 3637
NET_DVR_SET_FIREDETECTION_TRIGGER 设置火点检测联动配置 3639
NET_DVR_SET_LOWPOWER 设置低功耗配置 3733
NET_DVR_SET_ZOOMLINKAGE 设置变倍联动配置 3736
NET_DVR_SET_MANUALRANGING 设置手动测距参数 6677
NET_DVR_SET_THERMOMETRY_BASICPARAM 设置测温配置参数 3622
NET_DVR_SET_THERMOMETRY_PRESETINFO 设置测温预置点关联配置参数 3625
NET_DVR_SET_THERMOMETRY_ALARMRULE 设置测温预置点报警规则配置参数 3628
NET_DVR_SET_THERMOMETRY_DIFFCOMPARISON 设置测温预置点温差规则配置参数 3631
NET_DVR_SET_THERMOMETRY_TRIGGER 设置测温联动配置 3633
NET_DVR_SET_BAREDATAOVERLAY_CFG 设置热成像裸数据叠加 6661
NET_DVR_SET_THERMINTELL 设置热成像智能互斥配置参数 6713
NET_DVR_SET_MANUALDEICING 设置手动除冰配置 6679
表 5.43 设置参数配置命令
dwCommand 宏定义 lpCondBuffer lpInBuffer
NET_DVR_SET_FIREDETECTION 4 字节(DWORD)通道号 NET_DVR_FIREDETECTION_CFG
96
设备网络 SDK 编程指南
NET_DVR_SET_FIREDETECTION_TRIGGER 4 字节(DWORD)通道号 NET_DVR_EVENT_TRIGGER
NET_DVR_SET_LOWPOWER 4 字节(DWORD)通道号 NET_DVR_LOWPOWER
NET_DVR_SET_ZOOMLINKAGE 4 字节(DWORD)通道号 NET_DVR_ZOOMLINKAGE
NET_DVR_SET_MANUALRANGING 4 字节(DWORD)通道号 NET_DVR_MANUALRANGING_CFG
NET_DVR_SET_THERMOMETRY_BASICPARAM 4 字节(DWORD)通道号 NET_DVR_THERMOMETRY_BASICPARAM
NET_DVR_SET_THERMOMETRY_PRESETINFO NET_DVR_THERMOMETRY_COND NET_DVR_THERMOMETRY_PRESETINFO
NET_DVR_SET_THERMOMETRY_ALARMRULE NET_DVR_THERMOMETRY_COND NET_DVR_THERMOMETRY_ALARMRULE
NET_DVR_SET_THERMOMETRY_DIFFCOMPARISON NET_DVR_THERMOMETRY_COND NET_DVR_THERMOMETRY_DIFFCOMPARISON
NET_DVR_SET_THERMOMETRY_TRIGGER NET_DVR_THERMOMETRY_TRIGGER_COND NET_DVR_EVENT_TRIGGER
NET_DVR_SET_BAREDATAOVERLAY_CFG 4 字节(DWORD)通道号 NET_DVR_BAREDATAOVERLAY_CFG
NET_DVR_SET_THERMINTELL 4 字节(DWORD)通道号 NET_DVR_THERMINTELL_PARAM
NET_DVR_SET_MANUALDEICING 4 字节(DWORD)通道号 NET_DVR_MANUALDEICING_CFG


[C++] 纯文本查看 复制代码
//这是自开发  demo 中显示热成像图像的功能   如图
        private void btnPreview_Click(object sender, EventArgs e)
        {
            if (m_lUserID < 0)
            {
                MessageBox.Show("Please login the device firstly!");
                return;
            }

            if (m_bRecord)
            {
                MessageBox.Show("Please stop recording firstly!");
                return;           
            }

            if (m_lRealHandle < 0)
            {
                CHCNetSDK.NET_DVR_PREVIEWINFO lpPreviewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO();
                lpPreviewInfo.hPlayWnd = RealPlayWnd.Handle;//预览窗口 live view window
                lpPreviewInfo.lChannel = iChannelNum[(int)iSelIndex];//预览的设备通道 the device channel number
                lpPreviewInfo.dwStreamType = 0;//码流类型:0-主码流,1-子码流,2-码流3,3-码流4,以此类推
                lpPreviewInfo.dwLinkMode = 0;//连接方式:0- TCP方式,1- UDP方式,2- 多播方式,3- RTP方式,4-RTP/RTSP,5-RSTP/HTTP
                lpPreviewInfo.bBlocked = true; //0- 非阻塞取流,1- 阻塞取流
                lpPreviewInfo.dwDisplayBufNum = 15; //播放库显示缓冲区最大帧数

                CHCNetSDK.NET_DVR_STD_CONFIG dvrStdConfig = new CHCNetSDK.NET_DVR_STD_CONFIG();

                IntPtr pUser = IntPtr.Zero;//用户数据 user data

                if (comboBoxView.SelectedIndex == 0)
                {
                    //打开预览 Start live view
                    m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID, ref lpPreviewInfo, null/*RealData*/, pUser);
                    var tt = CHCNetSDK.NET_DVR_GetSTDConfig(m_lUserID, 3636, ref dvrStdConfig); //这个方法是 获取设备的配置信息的  //但是由于我不知道这个参数 dvrStdConfig  应该传入什么值  所已 返回为false  
                    if (tt == false)
                    {
                        var getErrorCode = CHCNetSDK.NET_DVR_GetLastError();
                    }
                }
                else
                {
                    lpPreviewInfo.hPlayWnd = IntPtr.Zero;//预览窗口 live view window
                    m_ptrRealHandle = RealPlayWnd.Handle;
                    RealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack);//预览实时流回调函数 real-time stream callback function
                    m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID, ref lpPreviewInfo, RealData, pUser);
                    var tt =  CHCNetSDK.NET_DVR_GetSTDConfig(m_lUserID, 3636, ref dvrStdConfig);
                }
               
                if (m_lRealHandle < 0)
                {
                    iLastErr = CHCNetSDK.NET_DVR_GetLastError();
                    str = "NET_DVR_RealPlay_V40 failed, error code= " + iLastErr; //预览失败,输出错误号 failed to start live view, and output the error code.
                    DebugInfo(str);
                    return;
                }
                else
                {
                    //预览成功
                    DebugInfo("NET_DVR_RealPlay_V40 succ!");
                    btnPreview.Text = "Stop View";
                }
            }
            else
            {
                //停止预览 Stop live view
                if (!CHCNetSDK.NET_DVR_StopRealPlay(m_lRealHandle))
                {
                    iLastErr = CHCNetSDK.NET_DVR_GetLastError();
                    str = "NET_DVR_StopRealPlay failed, error code= " + iLastErr;
                    DebugInfo(str);
                    return;
                }

                if ((comboBoxView.SelectedIndex == 1) && (m_lPort>=0))
                {
                    if (!PlayCtrl.PlayM4_Stop(m_lPort))
                    {
                        iLastErr = PlayCtrl.PlayM4_GetLastError(m_lPort);
                        str = "PlayM4_Stop failed, error code= " + iLastErr;
                        DebugInfo(str);
                    }
                    if (!PlayCtrl.PlayM4_CloseStream(m_lPort))
                    {
                        iLastErr = PlayCtrl.PlayM4_GetLastError(m_lPort);
                        str = "PlayM4_CloseStream failed, error code= " + iLastErr;
                        DebugInfo(str);
                    }
                    if (!PlayCtrl.PlayM4_FreePort(m_lPort))
                    {
                        iLastErr = PlayCtrl.PlayM4_GetLastError(m_lPort);
                        str = "PlayM4_FreePort failed, error code= " + iLastErr;
                        DebugInfo(str);
                    }
                    m_lPort = -1;
                }

                DebugInfo("NET_DVR_StopRealPlay succ!");
                m_lRealHandle = -1;
                btnPreview.Text = "Live View";
                RealPlayWnd.Invalidate();//刷新窗口 refresh the window
            }
            return;
        }


我想要实现的效果 就是自己写的demo 中 能获取到如图一中的那样  可以看到 热成像中  设置的  点 和 区域中的  温度信息
但是研究了很久还是不行  希望有相关大神能够指点迷津   万分感激  

热成像设置的点和区域

热成像设置的点和区域

自开发获取热成像图像demo

自开发获取热成像图像demo

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

侃遍天下无二人 发表于 2023-3-12 18:15
代码帮你编辑了一下,表格就麻烦你重新整理了,可以考虑用md格式来画
greatpeng 发表于 2023-3-12 20:56
 楼主| ZsomebodyZ 发表于 2023-3-14 08:30
侃遍天下无二人 发表于 2023-3-12 18:15
代码帮你编辑了一下,表格就麻烦你重新整理了,可以考虑用md格式来画

你好 你说的代码编辑过了 是在哪?

点评

我指的是格式上用了代码样式,内容我没动  详情 回复 发表于 2023-3-14 12:08
侃遍天下无二人 发表于 2023-3-14 12:08
ZsomebodyZ 发表于 2023-3-14 08:30
你好 你说的代码编辑过了 是在哪?

我指的是格式上用了代码样式,内容我没动
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 01:25

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表