第三章 视频监控系统各模块的设计
3.1 设计开发流程框图
本设计根据任务书拟定的相关任务,归纳出开发的视频监控所需要的相关功能,通过LabVIEW 2014版本软件的学习后制定出如下的流程框图。
临时缓冲区 获取摄像头 创建图像 图像动态 实时采集
在while中动态实时采集 创建视频压缩 在while中写入帧 关闭视频压缩 图像的压缩和保存 视频监控画面 媒体播放器 时间文本 时间的记录 图13 设计流程开发图
3.2 图像采集部分思路
本设计通过人们日常所使用的视频聊天的USB摄像头作为图像采集的硬件结合LabVIEW软件编写的程序,用摄像头采集相关的监控画面并通过软件程序处理后显示在计算机上,图像采集部分的程序框图如图14所示。
图像采集部分的编写所使用的函数主要为程序框图中的视觉与运动模块和前面板中的Vision模块。具体的编程思路为:IMAQdx Open Camera VI→IMAQdx Configure Grab VI→IMAQ Create VI→IMAQdx Grab2 VI→IMAQ Draw Text VI→Image Display→IMAQ Dispose VI
16
→IMAQdx Close Camera VI。首先使用IMAQdx函数中IMAQdx Open Camera VI函数设置计算机所连接的摄像头并且将设置的摄像头打开,设置前可通过NI MAX查询摄像头名称信息,再将上个函数连接IMAQdx Configure Grab,通过该函数进行图像的动态采集,创建一个IMAQ Create VI用来向系统获取相应的缓存,将采取的图像和获得的缓存传输到IMAQdx Grab2 VI,该函数获取图像的当前帧并存于缓存中再获得下一帧,将图像一帧一帧的传输到文本处理处,文本处理在每一帧图像上添加当前帧的时间,再将每一帧的图像按顺序显示在Image Display上。整个获取每帧图像处理再显示到窗口上在一个带控件的While循环中,按下循环下的停止键则跳出循环,打开摄像头和获取内存与关闭摄像头和释放内存相对应,在按下停止后执行IMAQ Dispose VI释放缓存和IMAQdx Close Camera VI关闭摄像机从而程序停止运行。
图14 监控图像采集的程序框图
3.3视频图像采集设计
本设计视频图像采集部分使用到两部分模块,首先是前面板控件面板中的“Vision”模块,其次程序框图控件面板中的“视觉与运动”模块。
3.3.1 创建VI程序
启动LabVIEW 2014,创建新的VI程序,并且命名为image.vi。如图15所示。
17
图15 新建VI程序
3.3.2 IMAQdx Open Camera VI的使用
该部分设计主要是基于USB摄像头上,所以首先要选择所需要打开的USB摄像头,再在视觉与运动模块中找到IMAQdx Open Camera VI左击拖入程序框图中,如图16所示,并将之前选择好的USB摄像头连接至Session In上,USB摄像头信息则会通过Session In端口传输进该函数中。函数在得到USB摄像头信息后,发出命令将其打开并通过Session Out将打开的USB摄像头信息传输出。
图16 IMAQdx Open Camera VI
Error in与Error out用于输入和输出程序运行中出现的错误,并可通过Error out显示的错误代码来查询出程序的错误。
函数具体的内部结构如图17所示。
图17 IMAQdx Open Camera VI的前面板和程序框图
18
3.3.3 IMAQdx Configure Grab VI的使用
在视觉与运动模块IMAQdx中选择该函数,此函数的作用主要是对之前打开的USB摄像头进行配置和控制摄像头开始采集图像,如图18所示。
图18 IMAQdx Configure Grab VI
图19 IMAQdx Configure Grab VI的前面板和程序框图
函数具体的内部结构如图19所示。从程序框图中可以看出,该函数包含一个条件结构,即在输入的摄像头打开状态为真是开始采集图像。
3.3.4 IMAQ Create VI的使用
在视觉与运动模块中找到IMAQ Create VI函数,该函数的主要功能是给图像提供缓存,如图20所示。
图20 IMAQ Create VI
其中Image Name为加粗表示此端口必须要有输入,即要给此设置一个名字,本设计设置
19
成image。设置图片类型通过Image Type节点。Border Size决定了宽度,图像的边界。函数内部结构如图21所示。
图21 IMAQ Create VI的前面板和程序框图
3.3.5 IMAQdx Grab2 VI的使用
在视觉与运动模块IMAQdx中选择该函数,此函数的作用是获得当前传入采集的单帧图像,并存入之前获得的缓存中。将此函数IMAQdx Configure Grab VI函数连接,在配置过摄像头相关信息后,则会使用该函数进行缓存的获取。若设置的摄像头视频格式与获取的图像类型不匹配,则系统会自动将获取的图形转化到合适的图像类型格式,如图22所示。
图22 IMAQdx Configure Grab VI
Wait for Next Buffer? (Yes):该节点作用为判断是否等待下一个缓冲区,若为是,则等待系统提供下一个缓冲区,并继续进行采集图像;反之则不等待,直接进入到最后一个采集图像的缓冲区域。
Buffer Number Out:作用是输出系统缓冲区域的数值。 函数具体的内部结构如图23所示。
20