安装好labview、 NI Vision Development
Module 视觉开发包、NI Vision Acquistin Software相机驱动程序

一、前面板图:包括两个图像显示框和两个按钮,剩下 的一个按钮是后面的程序框图的while循环自带的。还有一个字符串显示框,是卷积核。

剩下一个IMAQdx Session是用于选择相机的。

大恒相机 设置软触发模式和触发源 python 大恒相机 labview_卷积


二、程序框图:

大恒相机 设置软触发模式和触发源 python 大恒相机 labview_卷积_02


模块分析:

1.相机采集模块

新建一个VI,组织好前面板图,打开程序框图。然后选择一个IMAQ Create 数据缓存区并给它创建一个字符串常量。

大恒相机 设置软触发模式和触发源 python 大恒相机 labview_卷积_03


2.IMAQdx Open Camera:打开摄像机,加载摄像机配置文件,并为他创建一个IMAQdx的会话句柄。

3. 调用IMAQdx Configure Grab:完成Grab的初始化,Grab执行在缓冲区环上不断循环的捕获图像,使用grab VI进行高速图像采集。

4. 调用IMAQdx Grab获取当前帧的最新图像输出并为它创建一个图像显示。只有在调用IMAQdx Configure Grab VI后才调用这个VI。如果图像类型与摄像机的视频格式不匹配,这个VI会将图像类型更改为合适的格式。

5. 显示图片

在显示图片之前先用IMAQ ExtractSingleColorPlane把采集到的图片转换成灰度图片,方便之后的图像处理操作。

整个采集图片的框图如图:

大恒相机 设置软触发模式和触发源 python 大恒相机 labview_实时采集_04


6. 对采集的图像进行卷积

卷积要在一个条件结构中进行,以实现按下卷积按钮,就能对图像进行卷积的功能。这个条件为假时,结构内并不做动作。

(1) 首先要取一个字符串存放卷积核。然后调用IMAQ BuildKernel,通过转换字符串构造卷积矩阵。

(2) 其次,调用IMAQ Convolute,使用线性滤波器对图像进行滤波。这个函数输出的是一幅卷积后的图片。输入的两张图片一张是采集步骤得到的图片,一张是采集后,把图片进行复制,存到另外一个内存中,也就是说还要建立一个图片缓冲区,进行副本的保存,还有一个输入是(1)中得到的卷积矩阵。最后还要再加一个归一化因子,对矩阵内部的元素求和,然后除以这个归一化因子。

(3)复制和显示图片

这里要再建立一个图片的缓冲区,进行卷积后的图片保存,把得到的卷积图片进行复制,不然在稍后的while循环里面会替换掉卷积的图片,保存的就不是卷积后的图片了。显示图片调用的是一个图片显示窗口。

大恒相机 设置软触发模式和触发源 python 大恒相机 labview_字符串_05


7.保存卷积后的图片

保存卷积后的图片是在另一个条件结构中,因为要实现保存的按钮功能。调用一个文件对话框进行保存时的路径选择。然后调用IMAQ Write BMP File,以BMP格式把图片进行保存。保存要再创建一个图片缓冲区在卷积的条件结构中把图片复制到缓冲区,然后在缓冲区中拉一条线连接到IMAQ Write BMP File中就可以进行保存了。保存的结构框图如图

大恒相机 设置软触发模式和触发源 python 大恒相机 labview_显示图片_06


8.实现图片实时采集和程序不断运行

用一个while循环,把两个条件结构和图片采集中的IMAQdx Grab及以后的图片显示都包括其中,然后在循环条件创建一个输入控件,实现程序的退出按钮功能。