实现功能
首先放上我目前设计出来的程序框图
然后附上前面板
所设计程序实现的功能为:
- 对图像进行实时采集(未设置延时);
- 点击拍照实现图片拍照并存储。
我事先设置了存储路径,因此存储得到的照片就保存在F盘的Labviewpic文件夹里,如下图:
即完成了图片采集与保存功能。
现在来分步讲述一下我的步骤:
图像采集
首先我们要做的是实现图像的采集
建好VI之后,在程序框图面板右键选择图中所圈的框图命令(我所用的是USB2.0接口的工业相机,我之前没找到网上教程说的那个imaq for USB框图功能,后来摸索发现其实那个功能09年NI公司不再更新了,现在用USB相机时候直接在所圈框图命令中就有)。
选择open框图,它也解释了,就是打开你的相机。那么我们的电脑并不知道你要打开的是哪个相机啊,所以这个时候我们需要在前面板中的I/O框图里选择IMAQdx Session ,选择之后你就可以选择你所要打开的相机,即cam1。
那么此时前面板如下。
程序框图面板如下。
这当然是不够的,我们还需要对相机的图片进行采集,也就是需要用到configure grab和grab,如下图
即得到:
那么抓取了图片之后是不是要想办法显示,于是在前面板选择Image Display,哪一个都可以,我选择的是中间那个。
此时程序框图界面连线之后如下图
你会发现它不能运行。显示如下错误
查看help即可知道原因
image in为黑色代表必须要接线,我们此时还未接线当然是不能运行的。选择如下框图,选取最左边image management里面的第一个,即产生图像,进行连线并给它创建常量,随意取名(这里原因如上)。
此时连好线之后,如下图,已经可以运行了。运行之后会发现它是截取到了一帧图像,并不是一个如图视频一样的图像采集。
- 我们想要得到一个流畅的图像采集,那么应该如何实现呢?
这时应该想到用循环,用while循环,加了之后
此时可以设置一个一直循环,先不设置循环条件,那么现在已经可以捕捉连续的图像了。 - 我们不能一直开着相机啊,得关闭它并清除缓存,
然后我们可以给这个图像采集设置停止按钮(即图中取消按钮,改名字即可),
用error in与error out相连(实现数据流顺序运行),并且在grab框图命令后的error out连线上进行解除捆绑,输出簇中的元素,我们用或将cancel按钮与簇中元素并联,连接到设置的循环条件处。
这样就完成了一个简易的图像采集装置。
拍照存储
那么接下来要说的是拍照存储如何实现,首先我的设想是用事件结构来实现,但是我一直没有想清楚怎么实现按下拍照按钮就可以实现图片拍摄并存储。然后看了一些网上的例程我想到要用条件结构,拍照按钮作为条件,在“真”下进行图片存储功能设置。
首先选择图片存储的VI,这个我找了很久,后来找到了
然后我们需要将grab抓取到的图像进行存储,第一步连线如下图
设置的“image quality”默认,然后我们需要给它建立文件存储路径。一般都是第几幅图.jpg,因此我们需要将它们连接起来作为文件存储名字。因此我们需要创建路径,因为我们是要将文件夹名称与文件存储名字连接起来。然后提供一个找框图命令位置的好办法:直接在NI官网输入所需框图名字,在“技术与支持”那块找函数就好了,如图。
即可得到函数所在位置。
编写好之后,选择路径框图如下图
当然文件名称我没有写,这个是可以自己设置的。数值指存储时的名称,比如我存储的习惯为:1.jpg,当然这里你可以有其他存储习惯,如果不用数值名称那么这里就直接字符串连接就好,将数值输入框图改为字符串输入框图即好。
我现在实现的功能还很简单,接下来几天实现了新的功能会继续更新。
以上就是图片采集与存储的步骤,希望能给大家带来帮助。