文章目录
采集方式 snap IMAQ高层函数实现snap IMAQdx高层函数实现snap IMAQdx高层函数实现snap IMAQdx低层函数实现snap sequence IMAQ高层实现sequence IMAQ低层实现sequence IMAQdx高层实现sequence IMAQdx低层实现sequence grab IMAQ高层实现grab IMAQ低层实现grab IMAQdx高层实现grab IMAQdx低层实现grab ring IMAQ低层函数实现ring IMAQdx低层函数实现ring event IMAQdx低层函数实现event 属性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所设置的参数,均在图像采集会话后失效。