首页 > 编程知识 正文

海康摄像头实现点位缩放功能切换焦距不变,海康威视摄像头画面角度调整

时间:2023-05-03 20:20:51 阅读:265025 作者:1907

//控制缩放,再次点击恢复焦距

isptz = !isptz;

//获取摄像头的ptz

ptzInfo = yuvRender.GetPostion();

//把屏幕坐标转换成ptz(我是以1920*1080屏幕计算的,实际情况自己考虑)

m_struPtzCfg.wAction = 1; float infoP = 0; float infoT = 0; infoP = (Input.mousePosition.x - 960) / 34.21F; infoT = (Input.mousePosition.y - 540) / 34.21F;

//将ptz转换成摄像头能识别的数据

if (!isptz) { string str1 = Convert.ToString((int)(((float)YUVRender.ptzInfo.p + infoP) * 10)); m_struPtzCfg.wPanPos = (ushort)(Convert.ToUInt16(str1, 16)); string str2 = Convert.ToString((int)(((float)YUVRender.ptzInfo.t - infoT) * 10)); if (int.Parse(str2) < 0) { // return; } if (int.Parse(str1) < 0) { str1 = Convert.ToString(int.Parse(str1) + 3600); } if (int.Parse(str1) > 3600) { str1 = Convert.ToString(int.Parse(str1) - 3600); } m_struPtzCfg.wTiltPos = (ushort)(Convert.ToUInt16(str2, 16)); m_struPtzCfg.wZoomPos = 200; } else { string str1 = Convert.ToString((int)(((float)YUVRender.ptzInfo.p) * 10)); m_struPtzCfg.wPanPos = (ushort)(Convert.ToUInt16(str1, 16)); string str2 = Convert.ToString((int)(((float)YUVRender.ptzInfo.t) * 10)); m_struPtzCfg.wTiltPos = (ushort)(Convert.ToUInt16(str2, 16)); m_struPtzCfg.wZoomPos = 10; } Int32 nSize = Marshal.SizeOf(m_struPtzCfg); IntPtr ptrPtzCfg = Marshal.AllocHGlobal(nSize); Marshal.StructureToPtr(m_struPtzCfg, ptrPtzCfg, false); if (!CHCNetSDK.NET_DVR_SetDVRConfig(0, CHCNetSDK.NET_DVR_SET_PTZPOS, 1, ptrPtzCfg, (UInt32)nSize)) { iLastErr = CHCNetSDK.NET_DVR_GetLastError(); str = "NET_DVR_SetDVRConfig failed, error code= " + iLastErr; //设置POS参数失败 Debug.Log("设置POS参数失败"); return; } else { // Debug.Log("设置POS参数成功"); Marshal.FreeHGlobal(ptrPtzCfg); StartCoroutine(waitme()); return; }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。