海康二次开发学习笔记11-获取独立Group运行结果

获取独立Group运行结果

获取渲染结果

1. 添加VmRenderControl控件

在这里插入图片描述

2. 配置Group设置

若要显示结果,需要配置Group输出设置和显示设置,输出图像和夹角参数,显示输出图像和两条查找到的直线和其夹角

在这里插入图片描述

在这里插入图片描述

3. 导出Group

保存Group后,可将Group导出至原路径.

4. 获取渲染结果和数据结果

        /// <summary>
        /// 执行一次
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button4_Click(object sender, EventArgs e)
        {
            groupTool.Run();

            listBox1.Items.Add("执行Group成功.");
            listBox1.TopIndex = listBox1.Items.Count - 1;

            vmRenderControl1.ModuleSource = groupTool;

            string radius = groupTool.ModuResult.GetOutputFloat("out").pFloatVal[0].ToString();

            ImageBaseData_V2 imageBaseData_V2 = groupTool.ModuResult.GetOutputImageV2("ImageData");
            int width = imageBaseData_V2.Width;
            int height = imageBaseData_V2.Height;
            IntPtr imageByte = imageBaseData_V2.ImageData;
            VMPixelFormat pixelFormat = imageBaseData_V2.Pixelformat;

            listBox1.Items.Add($"角度:{ radius},图像宽:{width},高:{height},格式:{pixelFormat}");
            listBox1.TopIndex = listBox1.Items.Count - 1;
        }

5. 运行

在这里插入图片描述

可以看到,运行成功,并显示了角度和图像宽高格式.

6. 通过模块获取渲染和数据结果

            //也可以通过模块获取渲染结果和数据结果

            IMVSLineFindModuCs.IMVSLineFindModuTool lineFindModuTool = (IMVSLineFindModuCs.IMVSLineFindModuTool)groupTool["直线查找1"];
            vmRenderControl1.ModuleSource = lineFindModuTool;

            string strGroLineX = lineFindModuTool.ModuResult.OutputLine.StartPoint.X.ToString();

通过模块获取结果的方式只能获取到某个模块的结果,通过Group获取结果可以获取和订阅到多个模块的结果,推荐使用Group获取结果.

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果想要通过海康工业相机二次开发获取温度,需要使用支持温度测量功能的海康相机,并使用对应的SDK进行开发。以下是一个简单的获取海康相机温度的C++示例代码: ```c++ #include <iostream> #include "HCNetSDK.h" using namespace std; void CALLBACK fRealDataCallBack(LONG lRealHandle, DWORD dwDataType, BYTE* pBuffer, DWORD dwBufSize, void* pUser) { // 处理图像数据 } int main() { NET_DVR_Init(); // 登录相机 LONG lUserID = NET_DVR_Login_V30("192.168.1.100", 8000, "admin", "password", NULL); if (lUserID < 0) { cout << "Login failed, error code: " << NET_DVR_GetLastError() << endl; NET_DVR_Cleanup(); return 0; } // 启用温度测量功能 NET_DVR_THERMOMETRY_COND struCond = {0}; struCond.dwSize = sizeof(NET_DVR_THERMOMETRY_COND); struCond.byMode = THERMOMETRY_MODE_PLANAR; struCond.struPoint.byThermometryUnit = 1; struCond.struPoint.byEnableAlarmTemp = 1; struCond.struPoint.fAlarmTemp = 30.0; struCond.struPoint.struPoint.fX = 0.5; struCond.struPoint.struPoint.fY = 0.5; LONG lHandle = NET_DVR_StartRemoteConfig(lUserID, NET_DVR_SET_THERMOMETRY_COND, &struCond, sizeof(NET_DVR_THERMOMETRY_COND), NULL, NULL); if (lHandle < 0) { cout << "StartRemoteConfig failed, error code: " << NET_DVR_GetLastError() << endl; NET_DVR_Logout(lUserID); NET_DVR_Cleanup(); return 0; } DWORD dwRetLen = 0; NET_DVR_THERMOMETRY_COND struCondRet = {0}; if (!NET_DVR_GetNextRemoteConfig(lHandle, &struCondRet, sizeof(NET_DVR_THERMOMETRY_COND), &dwRetLen)) { cout << "GetNextRemoteConfig failed, error code: " << NET_DVR_GetLastError() << endl; NET_DVR_StopRemoteConfig(lHandle); NET_DVR_Logout(lUserID); NET_DVR_Cleanup(); return 0; } // 开始实时预览 NET_DVR_PREVIEWINFO struPreviewInfo = {0}; struPreviewInfo.hPlayWnd = NULL; struPreviewInfo.lChannel = 1; struPreviewInfo.dwStreamType = 0; struPreviewInfo.dwLinkMode = 0; LONG lRealHandle = NET_DVR_RealPlay_V40(lUserID, &struPreviewInfo, fRealDataCallBack, NULL); if (lRealHandle < 0) { cout << "RealPlay failed, error code: " << NET_DVR_GetLastError() << endl; NET_DVR_StopRemoteConfig(lHandle); NET_DVR_Logout(lUserID); NET_DVR_Cleanup(); return 0; } // 获取温度 NET_DVR_THERMOMETRY_ALARM struAlarm = {0}; if (NET_DVR_GetTempAlarm(lRealHandle, &struAlarm)) { float fTemp = struAlarm.struPoint.fTempValue; cout << "Temperature: " << fTemp << endl; } else { cout << "GetTempAlarm failed, error code: " << NET_DVR_GetLastError() << endl; } // 停止实时预览 NET_DVR_StopRealPlay(lRealHandle); // 停用温度测量功能 NET_DVR_StopRemoteConfig(lHandle); // 注销相机 NET_DVR_Logout(lUserID); NET_DVR_Cleanup(); return 0; } ``` 需要注意的是,以上代码仅供参考,实际开发中需要根据具体情况进行修改和优化。同时,使用海康相机进行温度测量需要满足一定的硬件和环境条件,否则可能会影响测量结果的准确性和稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值