海康VM应用FAQ 1.1 异步存图操作说明

【背景介绍】

        一些高节拍的应用场景,对VM方案耗时稳定性要求较高。由于相机的图像缓存是有上限的,若流程耗时大于相机取图的节拍,缓存满了就会溢出,从而出现丢帧的情况,即漏拍问题。

        若流程中存在“输出图像”存图的模块,如存NG图,“输出图像”模块自身会存在一定耗时,尤其是连续存图时,该模块耗时会增加(存图耗时与电脑硬盘读写速度、图像分辨率大小等有关)。

        为了避免由于“输出图像”模块自身耗时导致方案整体耗时超过检测节拍,考虑使用“数据队列”的的方式,新增一个流程进行异步存图,以减少“输出图像”模型耗时对方案带来的影响。

【方式说明】

  • 同步存图:存图功能与检测功能在同一个流程进行。如下图所示,方案使用“条件分支”存NG图,存图时,流程耗时增加;

        

  • 异步存图:存图功能与检测功能不在同一个流程进行,使用数据队列的方式中转存图,操作方法如下。

【操作方式】

1、新建存图流程及数据队列

  a)新建一个空流程,该流程后面负责存图功能;

  b)在“全流程”界面,新建一个数据队列;

  c)将数据队列通过连线的方式,接到新建的存图流程上。

  d)编辑数据队列:增加IMAGE的队列列数,增加异步触发流程;(异步触发实现方式参考后面补充说明)

  ​​​

2、检测流程修改

          a)删除原本的“输出图像”模块;

          b)新增发生数据模块,将想要存的图发送给数据队列。

3、存图流程修改

        a)使用“接收数据”模型接收输出队列的图像信息;

        b)使用“输出图像”模块进行存图。

【运行耗时对比】

图1  异步存图检测流程耗时

  

图2  同步存图检测流程耗时

                                                     

从图像上可以看到,使用异步存图的方式,检测流程耗时的稳定性有所提高。

【补充说明】

1、异步存图方式,检测流程使用“发送数据”将图像发给全局变量,该模块也是有耗时的,只不过该耗时要远小于“输出图像”,故可以减少存图耗时增加,而不是完全没有增加,耗时最好留有一定空间冗余。

2、“数据队列中”,图像队列行数默认是10,若存图较频繁,建议适当增加该参数,最大是20。

3、一个“数据队列”的IMAGE类型的数据队列最多支持添加4个。

4、触发流程分为同步触发和异步触发,通过是否开启异步触发进行设置。

a)同步触发:当有数据进入数据队列时,若满足触发条件,则触发流程执行,无论成功与否,本次触发结束;若不满足,则不触发流程执行。优点为可及时触发流程执行,缺点为一旦触发失败只能等待下次数据入队。

b)异步触发:新建数据队列模块时,会创建该模块的子线程。子线程一直处于运行中状态,每隔一定时间判断是否满足触发条件。若满足,则触发流程执行;若不满足,则不触发流程执行。优点为触发失败时不用等下次数据入队,间隔一段时间后可继续触发流程执行。缺点为存在时间等待,触发流程执行可能存在延时。

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值