石鑫华视觉准备就NI的视觉例子为大家解说一下,这些例子,可以说是最简单,但是又是最基本最经典的应用,虽然从架构上来讲,不是很好,但是贵在容易理解。对于初学者来讲,是相当适合的。而且还能从其中了解到一些基本的应用与细节。
LabVIEW安装了VDM后,在NI范例查找器中,会在工具包和模块中添加视觉的范例,如图1所示:
本节内容,只针对入门中的读取文件例子来讲。这个例子,其实在作者其他的文章中,都或多或少地有所涉及。
双击ReadFile Example.vi打开读取文件例子VI,其前面板与后面板如下图2所示:
在前面上点鼠标右键》控件》Vision的第二个、第三个即是图像显示控件,如图3所示:
再往回看图2,看一下程序框图。程序框图其实非常简单,一个平铺式的顺序结构。顺序结构在LV编程中,一般是不太主张的,但是在这里初学入门来讲,是非常实在的,可以明确的看到其工作的流程。顺序的第一帧中,先是打开图像,调用的是IMAQ Load Image Dialog加载图像对话框函数,这个函数与LV中的其它调用文件函数对话框类似。但是其包含了一个图像的预览框,可以对需要加载的图像进行预览及添加图像的基本信息。如图5所示:
加载完图像后,会传递图像的路径出来。接下来调用的函数是IMAQ GetFileInfo函数,获取图像类型。Vision中的函数,可以处理的图像类型不是完全一样的,有些函数只能处理彩色图像,有些函数只能接受8位的灰度图,有些呢,只能接受二值图像。因此在这里他首先获取图像的类型,这个类型可以为接下来的创建图像缓存时指定图像缓存的类型。不同的类型,使用的缓存不一样。获取了类型后,就是调用IMAQ Create函数,创建图像缓存引用。这个可以参考文章LVision:IMAQ Create创建图像缓存。再下来,就是读取图像函数IMAQ ReadFile,通过其读取加载图像输出的路径中的图像文件到创建缓存创建的缓存中。读取后,输出到Image(Display)中显示给用户。
顺序结构的第二帧,是IMAQ Dispose释放缓存及简易错误处理器。注意在这下面的解释说明Free Memory. The image control is in Snapshot mode, so the image displayed is not removed.其意思为释放内存。图像控件处于快照模式(参考文章LVision-Snapshot快照),因此显示的图像是不会被移除的。我们可以先显示即时帮助,然后在程序框图中的Image控件中点击右键,然后鼠标移动到创建》属性节点》Snapshot Mode,在即时帮助中可以看到其解释:The Image display control maintains a copy of the image wired to the control. This mode is not available for a control inside an array. LabVIEW RT does not support setting this property. 即图像显示控件保留了一幅连线到控件上的图像复本。这个模式不能用于数组中的控件。LV RT实时系统也不支持这个属性。所以,如果选择了快照模式,即使释放了图像缓存,也是不会清除图像显示控件中的图像的,因为他是复制了图像缓存中一个图像复本。而如果没有使用快照模式,那么释放图像缓存后,在图像显示控件中,将不会存在图像。
实际应用中,如果保留快照模式的图像复本,在保存VI后,VI会增加一幅图像的大小,例如500万级别的图像,那么VI可能会5M左右。而开启快照模式,对于一些需要快速显示的项目会比较友好,要覆盖显示的内容不会一闪一闪的。所以,一般可能Image控件需要在开启快照模式,而保存时,最好是没有图像进行保存。这样保存的VI就会小很多了。
到此这篇labview调用dll动态库输出参数(labview调用c++ dll动态库)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/cjjbc/72929.html