应用场景
上位机与工业相机通讯,控制相机抓取图像。
工业相机的通讯接口大多为USB口或网口。
- USB口则直接将通讯线缆插入上位机USB端口,打开MAX中设备与接口一栏可以看到电脑给相机分配的资源名称;
- 网口则需要将网线连接相机和上位机,然后安装相机对应的驱动,在安装的软件中为相机配置IP,并将上位机对应网口配置为同一网段的IP。之后打开MAX中设备与接口一栏也可以看到电脑给相机分配的资源名称;
代码分享
如果安装了NI Vision相关的模块,那么你可以在NI Example Finder中的Hardware Input and Output一栏中的Vision Acquisition文件夹中找到NI自带的相机视觉采集的示例。或者在labview的安装目录下找到对应的示例文件夹,见下图:
我这里展示一个比较简单的图像采集的示例:
代码解析:
- imaq create.vi创建图像缓存,存储由imaqdx grab2.vi采集到的图像;
- imaqdx open camera.vi 打开相机;
- imaqdx configure grab.vi 配置相机连续采集和一些参数;
- imaqdx grab2.vi 连续采集图像;
- imaqdx close camera.vi 关闭相机;
- imaq dispose.vi 清空图像缓存。
我一般不怎么用单次采集snap,我会让程序一直连续采集,在需要使用瞬时图片时,从连续采集的图片缓存中copy一帧图像即可,使用imaq copy.vi。
如果你想用snap,可以仿照上面的vi结构替换相应的底层vi即可。总体的思想都是创建图像缓存,打开相机,配置采集,开始采集,停止采集,关闭相机,清空图像缓存这样的顺序。
技巧分享
这里的技巧分享不仅适用于相机视觉系统,也适用于所有的函数快速定位。
以视觉系统VDM模块为例,当我们想要在程序框图中使用imaq create.vi这个函数,如果我们通过函数板一级一级定位,需要经过好几级的跳转才能找到对应的函数。多次函数的使用都要经过这样一个步骤会让我们烦躁不安。
见下图,imaq create.vi藏得太深了。
所以我在这里想推荐大家使用菜单栏里视图下的快速放置功能。
如果我们知道需要使用到的函数的名称,直接输入对应的名称就能快速定位该函数,之后鼠标双击或者敲击键盘回车键就可以将函数块放置在程序框图中,这样大大提高了我们书写代码的速度,避免了寻找模块的繁琐过程。
当然我们也可以使用函数板的搜索栏,其实是一样的效果。但是我更推荐快速放置,因为它可以配置快捷键,快速弹出,真的很丝滑。