海康威視網絡攝像頭-預覽出現綠色移動偵測規則框

最近接觸了海康威視網絡攝像頭的二次開發,需要下載官方提供的SDK

選用的二次開發DEMO路徑是解壓後的: Demo示例/c#開發示例/實時預覽示例代碼二
圖片描述
按照說明把相應的dll和文件夾放到工程對應的bin目錄,併成功運行demo之後,預覽圖像中如果有移動物體,就會顯示綠色的方塊格狀區域, 問詢海康威視的工程師後,得知是默認開啓了移動偵測框,取消這個設置有兩種方式,以下是原文:

這個是移動偵測的規則框,是播放庫疊加的內容

您可以直接關掉移動偵測的功能,調用接口不關閉移動偵測功能只關閉綠色格子顯示有兩種方式,一種是客戶端取消顯示,一種是設備端取消疊加:

  1. 調用NET_DVR_RealPlay_V40傳窗口句柄直接預覽默認顯示該疊加信息,此時調用NET_DVR_GetRealPlayerIndex獲取播放庫句柄,然後調用播放庫接口PlayM4_RenderPrivateData(該接口調用請參考播放庫SDK編程指南)可以控制顯示或者取消顯示。
  2. 通過NET_DVR_GetDVRConfig(命令:NET_DVR_GET_PICCFG_V40)、NET_DVR_SetDVRConfig(命令:NET_DVR_SET_PICCFG_V40)獲取和設置,其中的移動偵測參數NET_DVR_PICCFG_V40—》NET_DVR_MOTION_V40裏面的byEnableDisplay設置爲0即可,也可以WEB或者或者客戶端軟件登錄設備進配置界面直接手動設置取值動態顯示

對於使用的C#demo來說,對應的代碼如下:

//聲明一個NET_DVR_PICCFG_V40類型的類對象
public CHCNetSDK.NET_DVR_PICCFG_V40 m_struPicCfgV40;

//以下是函數體內使用的代碼
uint dwSize = (uint)Marshal.SizeOf(m_struPicCfgV40);
//一個指針和對應的結構體,SET和GET Config的時候都是使用指針,但是操作賦值的時候使用的是結構體
IntPtr ptrPicCfgV40 = Marshal.AllocHGlobal((Int32)dwSize);
Marshal.StructureToPtr(m_struPicCfgV40, ptrPicCfgV40, false);

uint dwReturn = 0;
int iGroupNo = iChannelNum[(int)iSelIndex]; //通道號 Channel number
if (!CHCNetSDK.NET_DVR_GetDVRConfig(m_lUserID, CHCNetSDK.NET_DVR_GET_PICCFG_V40, iGroupNo, ptrPicCfgV40, dwSize, ref dwReturn))
{
    iLastErr = CHCNetSDK.NET_DVR_GetLastError();
    str = "NET_DVR_GET_PICCFG_V40 failed, error code= " + iLastErr;
    //獲取IP資源配置信息失敗,輸出錯誤號 Failed to get configuration of IP channels and output the error code
    //MessageBox.Show(str);
}
else
{
    m_struPicCfgV40 = (CHCNetSDK.NET_DVR_PICCFG_V40)Marshal.PtrToStructure(ptrPicCfgV40, typeof(CHCNetSDK.NET_DVR_PICCFG_V40));
    //重點是設置這裏的byEnableDisplay爲0,取消移動偵測框
    m_struPicCfgV40.struMotion.byEnableDisplay = 0;
    //不要忘記結構體轉換成指針
    Marshal.StructureToPtr(m_struPicCfgV40, ptrPicCfgV40, true);

    if (!CHCNetSDK.NET_DVR_SetDVRConfig(m_lUserID, CHCNetSDK.NET_DVR_SET_PICCFG_V40, iGroupNo, ptrPicCfgV40, dwSize))
    {
        uint iLastErr = CHCNetSDK.NET_DVR_GetLastError();
        string str = "NET_DVR_SET_PICCFG_V40 failed, error code= " + iLastErr;
        //MessageBox.Show(str);
    }
    else
    {
        //MessageBox.Show("NET_DVR_SET_PICCFG_V40配置成功!" + iGroupNo);                        
        CHCNetSDK.NET_DVR_GetDVRConfig(m_lUserID, CHCNetSDK.NET_DVR_GET_PICCFG_V40, iGroupNo, ptrPicCfgV40, dwSize, ref dwReturn);
        m_struPicCfgV40 = (CHCNetSDK.NET_DVR_PICCFG_V40)Marshal.PtrToStructure(ptrPicCfgV40, typeof(CHCNetSDK.NET_DVR_PICCFG_V40));
        //MessageBox.Show("NET_DVR_GET_PICCFG_V40!" + m_struPicCfgV40.struMotion.byEnableDisplay);
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章