采集相关文章(单次采集图像时,常用Snap.vi来实现模式)

优采云 发布时间: 2021-12-07 20:00

  采集相关文章(单次采集图像时,常用Snap.vi来实现模式)

  当使用单个 采集 图像时,通常使用 Snap.vi 进行编程。,如果继续采集,我们会想到下面的模式。

  折断

  但是,在上图的模式下,采集镜像比较慢,因为Snap.vi包括初始化和关闭,最快的情况下需要120ms。为了解决这个问题,NI添加了Grab.vi来实现连续采集。框图如下:

  抓住

  在这种情况下,下一帧数据大约需要 40ms。

  但是在高速图像采集的应用中,我们会发现之前的模式也会存在一定的问题,即当图像采集速度非常高时,处理程序是来不及处理当前图像,图像缓冲区中的数据已被新图像数据覆盖。

  为了解决采集缓冲区不足的问题,我们可以增加图像采集的缓冲区。

  NI-IMAQ 提供了两种多缓冲方法,即序列和环。

  序列和环

  Sequence和Ring都是多缓冲图像采集的方法,区别在于Sequence是单个采集,Ring是连续的采集,类似于Snap和Grab。

  Sequence.vi 最重要的参数是 ImahesIn,它是一个图像数据缓冲区引用数组,其中收录对 ImaqCreate.vi 创建的图像数据缓冲区的多个引用。只有知道多个图像数据缓冲区在哪里,IMAQSequence.vi才能完成多个缓冲区的图像采集。

  序列应用:

  序列应用

  环图采集方法(IMAQ方法,IMAQdx不一样):

  Ring image采集方法需要通过三个VI来实现,分别是IMAQ ConfigureList.vi 、IMAQ Configure Buffer.vi和IMAQExtract.vi。

  IMAQ ConfigureList.vi 完成缓冲区列表的配置,告诉驱动程序缓冲区的数量,是否连续或单次执行图像采集以及缓冲区的位置。

  IMAQ ConfigureBuffer.vi 将创建的图像缓冲区分配到缓冲区列表中的相应位置。

  IMAQ ExtractBuffer.vi 从缓冲区中提取采集 接收到的图像,为后续的图像处理做准备。

  如下图(因为图太长,只截取了关键代码)

  第一步是调用IMAQ ConfigureList.vi,告诉驱动以连续的方式成像采集,缓冲区的位置在系统中——即开发参考程序的主机。

  第二步是调用IMAQ ConfigureBuffer.vi,将创建的图像缓冲区与缓冲区列表中的对应位置关联起来。

  第三步,调用IMAQStart.vi启动一张图片采集的进程。需要注意的是,在调用IMAQ Start.vi之前,必须先调用IMAQ Configure List.vi和IMAQ ConfigureBuffer.vi来配置采集Process。

  第四步是调用IMAQ ExtractBuffer.vi从缓冲区中提取图像。

  第五步,将IMAQ ExtractBuffer.vi的Buffer toExact参数设置为-1,即释放当前提取的缓冲区。IMAQExtractBuffer.vi在提取图像数据时会保护当前提取的缓冲区,所以当采集过程完成后,需要释放当前保护的缓冲区。

  Ring image 采集的主要过程如上所述,剩下的步骤就是熟悉的初始化采集硬件、释放图像采集硬件和释放缓冲区。

  ​

  ​

  ​

  ​

  ​

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线