• LabVIEW-IMAQ/IMAQdx/图像采集


    IMAQ 主要支持模拟相机、并行数字相机、CameraLink、NI智能相机采集图像,NIMAQdx主要用于从GigE、IEEE1394、USB、IP相机获取图像,支持Event采集方式。

    IMAQ 与IMAQdx提供高度封装的高层函数及涉及驱动与采集过程的低层函数。高层函数用于快速构建最基本类型的图像采集程序。低层函数可以创建任何类型的图像采集程序,适合需要对缓冲区、采集过程或相机进行更精细控制的场合(需要了解相应API和驱动程序

    采集方式

    采集方式按是否进行连续采集可分为一次性采集和连续采集。
    snap和sequence属于一次性采集,在打开采集设备后,采集一帧或多帧图像到缓冲区,随后即可关闭图像采集设备,完成采集任务。grab、ring、event属于连续采集 ,连续采集单帧或多帧图像进行分析处理,直到任务完成。

    snap

    snap 采集一幅图像到内存缓冲区,采集依次初始化一次,获取一次关闭设备一次。
    snap适用于对速度要求不高或逐帧分析的情况。

    IMAQ高层函数实现snap

    在这里插入图片描述
    IMAQ Init用于打开采集设备、其进行初始化、返回设备引用。需要图像采集设备的接口和通道信息IF Name作为输入参数。
    (使用系统中第二个图像采集卡的3通道,且在max中配置时均使用默认值,则IF Name img1::2)
    IMAQ Create用于为图像采集分配内存缓冲区。
    (每个缓冲区需要有唯一的名字)
    (图像边界大小指沿着图像边缘应额外添加的像素行和列宽度)
    IMAQ Dispose用于释放不再使用的内存。

    IMAQdx高层函数实现snap

    IMAQ低层函数实现功能时可直接对图像采集过程或缓冲区进行控制,适用于:
    需要对图像采集顺序进行定制;
    需要对缓冲区进行操作;
    需要通过会话设置所采集的图像的属性;
    进行同步或异步图像采集;
    在这里插入图片描述
    buffer list包括配置缓冲列表中有多少独立的图像缓冲区、缓冲区存放的位置、感兴趣的图像区域ROI(默认整幅图像)以及采集时是否要向缓冲区不断传送数据。
    (对于snap。只需要采集一帧图像,所以只需要1个图像缓冲区)
    (缓冲区可以在系统内存中分配,也可以在采集卡的板载内存分配)
    create和configure buffer对缓冲区列表的每个独立图像缓冲区分别配置
    (create在系统内存中为图像划定存放区域,configure buffer将内存中的位置与缓冲区列表编号一一关联,并指定从设备哪个通道(PCI/PXI1409/PCI1410)采集数据,指定采集前需要跳过的帧数)
    start 启动采集、
    (锁定缓冲区列表中需要的实际大小,命令驱动开始向缓冲区传送数据)
    get buffer 采集停止后才停止提取数据
    extract buffer 连续采集过程中从缓冲区循环提取
    (buffer to extract值为-1时,函数只释放当前已经被提取的缓冲,不再从缓冲列表提取新的缓冲)
    close 和dispose关闭设备并释放程序执行所用内存
    stop 暂停采集过程,后边可以用start重启采集过程

    IMAQdx高层函数实现snap

    在这里插入图片描述

    IMAQdx低层函数实现snap

    在这里插入图片描述
    IMAQdx只提供一个get image从系统缓冲区复制图像
    (buffer number,获取指定帧缓冲中的图像)
    (next当要获取的图像帧缓冲被覆盖时,等待并返回下一帧采集完成的图像)
    (last 当要获取的图像被缓冲覆盖时,获取缓冲区中最近一次采集完成的图像)

    sequence

    sequence采集多帧图像到内存缓冲区,可以选择跳过某些帧,获取完指定帧后关闭设备。
    sequence适用于对多个连续图像帧进行分析。

    IMAQ高层实现sequence

    在这里插入图片描述

    IMAQ低层实现sequence

    在这里插入图片描述

    IMAQdx高层实现sequence

    在这里插入图片描述

    IMAQdx低层实现sequence

    在这里插入图片描述

    grab

    grab打开设备后一直连续采集图像,每次新采集的图像循环覆盖缓冲区中保存的前一帧图像,直到关闭设备。
    grab缓冲时最好分配3帧或以上缓冲,用以减少采集过快引起的帧缓冲覆盖
    不再需要缓冲时,将所有图像缓冲释放

    IMAQ高层实现grab

    在这里插入图片描述

    IMAQ低层实现grab

    在这里插入图片描述

    IMAQdx高层实现grab

    在这里插入图片描述

    IMAQdx低层实现grab

    在这里插入图片描述

    ring

    ring打开设备后循环采集多幅图像,采集时图像按顺序写入缓冲区,缓冲区被填满后,从缓冲区起始位置重新循环写入数据。
    对实时性系统相对可靠

    IMAQ低层函数实现ring

    在这里插入图片描述

    IMAQdx低层函数实现ring

    在这里插入图片描述

    event

    event在图像采集完之后可以主动进行通知。

    IMAQdx低层函数实现event

    在这里插入图片描述
    在这里插入图片描述

    驱动采集到某帧图像的完整数据时产生事件
    规定时间内没有捕获到该事件且驱动不在采集过程中,结束程序

    属性

    相机参数及属性可以通过max在设计时进行配置、通过程序对相机属性进行初始化、对于保存在相机文件(.icd)的属性参数,可使用IMAQ属性节点配置。

    IMAQ提供了配置相机串口特定功能的属性参数的专用VI(set camera attribute)。
    IMAQdx支持的相机通常将相机类型参数直接保存在相机中,其支持的属性配置参数只有属性名和属性值两个域,可以使用属性节点对这些参数进行设置。
    完整的属性名使用两个冒号将不同层级的关键字隔开(如AcquisitionAttributes::Timeout)。
    在这里插入图片描述
    在这里插入图片描述

    IMAQ与IMAQdx使用属性节点或相机属性参数配置VI所设置的参数,均在图像采集会话后失效。

  • 相关阅读:
    9月编程排行榜新鲜出炉霸榜还得是它~
    第八章作业
    LinkedIn领英怎么避免封号?封号怎么解决?(建议收藏)
    Android Lottie动画
    【操作系统】实验CPU Scheduling--附讲解视频
    Java 类集 习题
    纯干货解答 | ERP是什么?有什么作用呢?
    Go 实现的命令行程序,可以通过参数来控制和消耗 CPU 占比。通常用于测试系统负载和性能。
    【Python百日进阶-数据分析】Day118 - Plotly 子图
    【英语:基础高阶_学术写作训练】J4.学术写作实践精析
  • 原文地址:https://blog.csdn.net/weixin_43781045/article/details/127418646