WEB开发网
开发学院软件开发C语言 C# 视频监控系列(7):服务器端——封装API(下) ... 阅读

C# 视频监控系列(7):服务器端——封装API(下) [DS40xxSDK.dll] (下)

 2009-04-08 08:23:46 来源:WEB开发网   
核心提示: #region 3.6移动侦测 // 释 义: 移动侦测 //DS4000HC提供运动强度信息来处理运动检测,设置移动侦测区域时以32*32像素块为 //单位,C# 视频监控系列(7):服务器端——封装API(下) [DS40xxSDK.dll] (下)(2),按4CIF(704*57

#region 3.6移动侦测

        //        释 义: 移动侦测
        //DS4000HC提供运动强度信息来处理运动检测,设置移动侦测区域时以32*32像素块为
        //单位,按4CIF(704*576)分辨率计算,每行有22个块(704/32),PAL时18行(576/32),
        //NTSC时15行(480/32),与编码格式无关。经过测试,这种方法比H卡提高了灵敏度和可
        //靠性,并简化了返回的数据,返回的值是18个DWORD,对应屏幕高度576/32=18行(PAL),
        //每个DWORD的0-21位对应屏幕宽度704/32=22, 其中1为运动,0为静止,也可以调用原有
        //MotionAnalyzer分析结果
        //4.0版本的SDK新增了接口函数SetupMotionDetectionEx,提供了更灵活的功能,并且
        //简化了用户的工作量。


        #region 3.6.1设置方式一

        //        设置移动侦测相关参数并启动移动侦测后,运动检测信息会通过数据流传送,用户程序
        //发现PktMotionDetection帧类型时,可调用MotionAnalyzer来处理运动信息,结果由
        //MotionAnalyzer在iResult中返回。也可以按照SDK提供的数据格式来自己分析,运动信息格
        //式参见移动侦测释义。


        /// <summary>
        /// 3.6.1.1设置移动侦测灵敏度
        ///     说 明:  调整运动分析的灵敏度,支持动态调整,此函数决定DSP全局运动分析的灵敏度。
        ///     而MotionAnalyzer的iThreshold则主要用于分析指定区域的运动统计结果。
        ///
        /// int __stdcall AdjustMotionDetectPrecision(HANDLE hChannelHandle, int iGrade, int iFastMotionDetectFps, int iSlowMotionDetectFps)
        /// </summary>
        /// <param name="hChannelHandle">通道句柄</param>
        /// <param name="iGrade">
        ///     运动分析灵敏度等级,取值范围0-6,0级最灵敏,6级最迟钝,推荐值为2。
        ///     将iGrade和“0x80000000“做”或“操作,会对移动侦测启用自适应分析。
        /// </param>
        /// <param name="iFastMotionDetectFps">高速运动检测的帧间隔,取值范围0-12,0表示不作高速运动检测,通常值取为2</param>
        /// <param name="iSlowMotionDetectFps">低速运动检测的帧间隔,取值范围13以上,当取值为0时,不作低速运动检测</param>
        /// <returns>成功返回0;失败返回错误号</returns>
        [DllImport("DS40xxSDK.dll")]
        public static extern int AdjustMotionDetectPrecision(IntPtr hChannelHandle, int iGrade, int iFastMotionDetectFps, int iSlowMotionDetectFps);



        /// <summary>
        /// 3.6.1.2设置移动侦测区域范围及个数
        ///     说 明:  设置运动检测区域;当收到运动信息的数据帧(PktMotionDetection)时,调用
        ///     MotionAnalyzer;MotionAnalyzer会根据在SetupMotionDetection中的设置来分析每个需要
        ///     检测的区域,当某区域的阀值(MotionAnalyzer的iThreshold)到达时,会在返回的区域数组   
        ///     (MotionAnalyzer的iResult)标明最后的判断;矩形框范围是(0,0,703,575)
        ///
        /// int __stdcall SetupMotionDetection(HANDLE hChannelHandle, RECT *RectList, int iAreas)
        /// </summary>
        /// <param name="hChannelHandle">通道句柄</param>
        /// <param name="RectList">矩形框数组</param>
        /// <param name="iAreas">矩形框个数,最大值为100</param>
        /// <returns>成功返回0;失败返回错误号</returns>
        [DllImport("DS40xxSDK.dll")]
        public static extern int SetupMotionDetection(IntPtr hChannelHandle, ref Rectangle RectList, int iAreas);


        /// <summary>
        /// 3.6.1.3移动侦测分析
        ///     说 明:  动态监测分析,移动侦测由DSP完成,DSP送出的IPktMotionData帧就是已经
        ///     分析好的运动信息,区域的运动分析由主机完成,数据源由码流中的PktMotionData帧提供,
        ///     结果在iResult中说明,2.0以上版本的运动分析基于DSP提供的运动强度,不再使用运动
        ///     矢量,其灵敏度及可靠性有大幅提高,用户软件可使用由码流提供的运动强度信息来自己分
        ///     析或调用该函数来进行区域分析
        ///
        /// 函 数:  int __stdcall MotionAnalyzer(HANDLE hChannelHandle, char *MotionData,  int iThreshold, int *iResult)
        /// </summary>
        /// <param name="hChannelHandle">通道句柄</param>
        /// <param name="MotionData">运动矢量指针</param>
        /// <param name="iThreshold">判断运动程度的伐值</param>
        /// <param name="iResult">按照伐值指定的强度分析后的结果数组。数组的大小在SetupMotionDetection的numberOfAreas指定,如果某数组单元的值大于零则表明有该区域有该值表明的运动强度</param>
        /// <returns>成功返回0;失败返回错误号 </returns>
        [DllImport("DS40xxSDK.dll")]
        public static extern int MotionAnalyzer(IntPtr hChannelHandle, char[] MotionData, int iThreshold, ref int iResult);
        #endregion


        #region 3.6.2设置方式二

        /// <summary>
        /// 3.6.2.1设置移动侦测(扩展)
        ///     说 明:  设置移动侦测,这种设置方式可替代设置方式一中3个函数的共同作用,在这种情况下,DSP将不再反馈移动侦测帧。
        ///     参数delay:画面静止之后的延时时间,单位为秒,若在该延时时间内没有产生
        ///     移动侦测,则将回调函数MotionDetectionCallback之中的参数bMotionDetected标志为False,
        ///     若在该延时时间之内,在当前所设置的区域内产生移动侦测,则bMotionDetected被标志为
        ///     True,并且在产生移动侦测之后的delay时间内,DSP不会对在此时间段之内的视频帧进行
        ///     移动侦测分析,因此DSP和主机都省却了在此时间段对产生的视频运动进行频繁判断和分
        ///     析。直至超过了此delay秒延时时间,DSP才会对此时刻的视频进行判断,若产生了移动侦
        ///     测,则回调函数中的bMotionDetected被再次标志为True,否则标志为False。
        ///    
        ///
        /// 函 数:  int __stdcall SetupMotionDetectionEx(HANDLE hChannelHandle,int iGrade, int iFastMotionDetectFps, int iSlowMotionDetectFps,UINT delay,RECT *RectList, int  iAreas, MOTION_DETECTION_CALLBACK MotionDetectionCallback,int reserved)
        /// </summary>
        /// <param name="hChannelHandle">通道句柄</param>
        /// <param name="iGrade">
        ///     运动分析灵敏度等级,取值范围0-6,0级最灵敏,6级最迟钝,
        ///     推荐值2。将iGrade和“0x80000000“做”或“操作,会对移动侦测启用
        ///     自适应分析。
        /// </param>
        /// <param name="iFastMotionDetectFps">高速运动检测的帧间隔,取值范围0-12,0表示不作高速运动检测,通常值取为2</param>
        /// <param name="iSlowMotionDetectFps">低速运动检测的帧间隔,取值范围13以上,当取值为0时,不作低速运动检测</param>
        /// <param name="delay">前一次移动帧测产生后的延时时间</param>
        /// <param name="RectList">进行移动侦测的矩形框数组</param>
        /// <param name="iAreas">矩形框个数(最大个数为100)</param>
        /// <param name="MotionDetectionCallback">移动侦测结果回调函数 </param>
        /// <param name="reserved">保留参数</param>
        /// <returns>成功返回0;失败返回错误号</returns>
        [DllImport("DS40xxSDK.dll")]
        public static extern int SetupMotionDetectionEx(IntPtr hChannelHandle, int iGrade, int iFastMotionDetectFps, int iSlowMotionDetectFps, uint delay, ref Rectangle RectList, int iAreas, MOTION_DETECTION_CALLBACK MotionDetectionCallback, int reserved);



        #endregion

        #region 3.6.3启动及停止移动侦测

        /// <summary>
        /// 3.6.3.1启动移动侦测
        ///     说 明:  启动移动侦测。
        ///     注意:移动侦测和编码相互独立,用户程序可在不启动编码的情况下进行运动检测
        ///
        /// int __stdcall StartMotionDetection(HANDLE hChannelHandle)
        /// </summary>
        /// <param name="hChannelHandle">通道句柄</param>
        /// <returns>成功返回0;失败返回错误号</returns>
        [DllImport("DS40xxSDK.dll")]
        public static extern int StartMotionDetection(IntPtr hChannelHandle);


        /// <summary>
        /// 3.6.3.2停止移动侦测
        ///     说 明:  停止移动侦测
        ///
        /// int __stdcall StopMotionDetection(HANDLE hChannelHandle)
        /// </summary>
        /// <param name="hChannelHandle"></param>
        /// <returns></returns>
        [DllImport("DS40xxSDK.dll")]
        public static extern int StopMotionDetection(IntPtr hChannelHandle);


        #endregion

        #endregion

上一页  1 2 3 4 5 6  下一页

Tags:视频监控 系列 服务器

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接