我这在做这方面的项目,而且刚刚做过动态监测以及动态监测录像部分。
我想,动态监测函数一定会返回一个值,来说明是否监测到动态信息。如果有动态,则开始你自己的相应操作(如红灯亮),否则,说明本帧没有监测到动态信息,就开始延迟计数,在计数过程中仍然保持监测到动态信息的操作(红灯仍亮),当持续接收不到动态信息,并且计数达到一定的数值时,启动你静态下的操作(红灯灭);如果在计数达到某设定值以前,又检测到了动态信息,则计数清零,仍然保持前面操作的状态(红灯不灭)。
我的体会是:一定要弄清楚状态转换的条件,原状态加上新的信息是状态是否转换的关键。
我的程序中有很多的if和else,所以如果逻辑不清楚,结果很难正确。如果你仍不清楚,我可以把程序的流程写出来。

解决方案 »

  1.   

    我又来了!
        它的自带函数只是提供一个自编函数的入口,一旦图像有变化则进入自编函数。    
        现在我已经尝试不断调用它自带的函数来监测是否需要停止录像,但当再次调用时,原先的录像任务就不继续了。程序的主要想法是:
        设标志p、lp、cp,初始值为0,当启动动态监测进入我自编函数时进行下列操作:
      if (p==0)//第一次调用
       { p=1;}
      else if (p==1)
          {p=2;录像}
      else if (p=2)
       {lp=cp}//表示正在录像
      
    同时有一时钟,每一段时间判断一次:
             if (p==2)
    {cp++;同时调用自带函数判断是否要再次调用自编函数,此处出错,原先的录像就停止了!
               if((cp-lp)>15)//一段时间不在录就停止
    {停止录像}
         现在我的问题是,这种想法应该没问题,理论上本可以实现,但它的自带函数不支持!请问各位高手指点!多谢!
      

  2.   

    请把它的自带函数的功能描述的清楚一些:“它的自带函数只是提供一个自编函数的入口,一旦图像有变化则进入自编函数”,是自动的 callback ?还是需要你每次调用它的函数判断有无变化?
      

  3.   

    ErrorCode MPGSensorStart(SensorProc fpDeal,DWORD ID = 0); 目的: 安装使用动态检测的回调函数,启动动态检测功能.
    参数: 一个SensorProc类型的用户定义函数,当检测到视频图像变化时系统自动调用. ID
        要连接的卡的索引号,缺省为0.
    返回值: 正确启动动态检测功能返回MPG_OK,否则返回错误代码.
    注意事项启动本函数后整个视频图像都在检测范围里,检测灵敏度值为80
    我知道的也就这些!
      

  4.   

    我曾经帮银行做过ATM机的监控,我处理动态检测的方法是比较相邻两帧图象的区别,图象存放在内存快中,分别比较RGB分量,指定门限值(包括分量门限和变化帧数门限),需要考虑到环境光的变化,如果是灰度图象,要容易的多,只需要比较灰度值,而且效果好。当然,比较结果还与图象采集设备有关,好的图象采集设备噪音点要少得多。门限值需要实验得出。大家讨论讨论。
      

  5.   

    Killer2002(阿星) 
    现在的动态检测根本不需要我们去管,也管不了,都是卡上的sdk函数中带的,卡上的数据包在打开动态检测的前提下,会告诉你这帧和上帧是不是有区别,当然可以通过这个值的变化起停录象,但这样录象的操作太频繁了,最终用户肯定不会答应的。至于减少误报,那就把检测的灵敏度降低,但这样也会出现该报的时候没报,矛盾的两个方面,看你怎么看了
      

  6.   

    同意gold_jin()的看法:“录象的时间长度应该是由用户自行设定,这样当有动时,几录几分钟,这才叫动态检测录象,并不是你说的动就录,不动就停,应该是动就录,录一段时间后停,再一次开始等待变化。”
      

  7.   

    gold_jin() 、( greenever(司马青杉) 
        电子警察呢说白了就是谁闯红灯就拍谁。因此讲究的是要说服力,它要求
    能够抓住的是证据。必须在触发信号瞬间就抓拍。我现在呢,是抓拍两场
    合起来是一帧。我门用的采集卡是不带压缩的。一般是一个路口需要八路
       不知道你们用的什么采集卡,支持几路采集,成本大概多少。
      

  8.   

    gold_jin() 真的是这样嘛?那我不是已经完成了?
    这个是我的毕业设计,可我们的毕业设计指导老师是说变就录,不变就不录的阿!
    我真的糊涂了!能再给我一个明确的答复嘛?多谢!
      

  9.   

    还是回到最先的问题吧!有人遇到过相似的问题嘛?请帮忙阿!
        它的自带函数只是提供一个自编函数的入口,一旦图像有变化则进入自编函数。    
        现在我已经尝试不断调用它自带的函数来监测是否需要停止录像,但当再次调用时,原先的录像任务就不继续了。程序的主要想法是:
        设标志p、lp、cp,初始值为0,当启动动态监测进入我自编函数时进行下列操作:
      if (p==0)//第一次调用
       { p=1;}
      else if (p==1)
          {p=2;录像}
      else if (p=2)
       {lp=cp}//表示正在录像
      
    同时有一时钟,每一段时间判断一次:
             if (p==2)
    {cp++;同时调用自带函数判断是否要再次调用自编函数,此处出错,原先的录像就停止了!
               if((cp-lp)>15)//一段时间不在录就停止
    {停止录像}
         现在我的问题是,这种想法应该没问题,理论上本可以实现,但它的自带函数不支持!请问各位高手指点!多谢!
      

  10.   

    csdn_2002(vc小混混)我说的没错,就是这样的,我的产品开发完都一年多了,在江苏都有的卖,动态检测就是这个意思,而且我接触的那么多厂商,都是这样实现的。如果按照你的说法,那图象前后两帧只要没变化,反应动的参数就会改变,那你的录象就在不停的开始和结束。而用户的要求是,比如当有人近来的时候,你就录个几分钟,这个时间长短用户会要求由他自己来设定
      

  11.   

    hj_long(Rober)是这样的,实际上基本上现在的卡都有图象抓拍的功能,我想你只要当有人闯红灯的时候,通过电路给串口一个信息让卡来抓拍图象就行了,这也就是我们通常所说的报警功能。我不知道你为什么把两场合成一帧,这可能和你的卡有关系。我不建议你用动态检测功能来控制抓拍,因为灵敏度的问题,可能会给你造成很多麻烦。直接这种电信号报警很好
      

  12.   

    hj_long(Rober)因为你不需要录象,所以只要图象采集卡就行了,和我用的不一样,我的带录象功能,价格就贵了许多,图象采集卡的饿种类很多,用些新型号的交好,功能比较多,而且由于不录象,你的程序改起来会很方便的,另外好象不压缩的卡,可能没有动态检测的功能
      

  13.   

    gold_jin() ,首先谢谢你的关注和热心。但是对于这个概念性问题,也许你做的东西,客户要求不同。我一直想查到究竟关于动态检测有没有一个统一的概念?可好像没有。如果你坚持,能给我看些权威性的资料嘛?其实我也希望是像你说的那样,那我就不用再头痛了!
    动态检测技术,是一旦检测到动静自动开始录像,动静消失后自动停止录像嘛?????
      

  14.   

    csdn_2002(vc小混混) 
    动态检测并不是为了录象而产生的,动态检测仅仅是在数据包中有一个参数提示你,着帧和前一帧发生了变化而已,有些卡还有这样的功能,能反映出什么地方在变化,就可以对动的地方进行追踪。至于录象,那是衍生出的功能,并不是本意变就录,不变就不录这句话大家都这么说,但真正的理解是我的这种说法,而不是你的,而且现在全国的监控软件厂家都是这么去做的,不信你可以去问,所有的用户也都是这种需求,没有你说的这种需求,你可以和你的用户再问问清楚,我做这个好几年了,年年的安防展都去,国内知名厂家都有所了解,听我的,没错
      

  15.   

    gold_jin() 
    你说的对,我们现在用的是采集卡,触发信号是线圈检测卡得来的,
    我们不是把两场合为一帧.说白了我每次从一个摄像机只取一场.
    关于我要用动态检测的呢,是因为采用线圈检测的系统现场施工太复杂,
    给以后维护相当不方便.
    我想在采集卡上在增加动态检测. 只是不知道怎么做.
      

  16.   

    firehorizon(格物致志) 
     只要监测一副图象中的预设一小块区域.比如停车线前方的一块区域
    方向呢一般不用了.国外有这方面的产品,可惜太贵了,国内无法承受.
    还有一路口我一台计算机起码要带8个摄像机.除了绿灯方向不要判别,每时每刻需要监控两个方向(两个摄像机).
      如果采用一帧一帧对比计算机能否胜任