LabVIEW中定义IMAQ图像处理函数的执行顺序
每次运行应用程序处理的图像都不同,如何保证正确的执行顺序?在图像采集或处理时,如何避免竞争条件
解决方案
图像数据类型与普通数据类型(例如,整数/字符串/布尔值)的存储方式不同,这意味着在普通数据类型不会导致竞争的情况下,图像数据类型可能会发生竞争。
为确保不会发生这种情况,访问图像的函数需要定义执行顺序。
例如,下面的框图显示了未定义执行顺序的两个函数。图像显示(A)或IMAQ阈值(B)将首先执行,但我们不确定是哪个。 IMAQ Mophology(C)一定是最后执行的。
在图像开始处理(B) 之前确保显示图像(A)的一种方法是将要要先执行的功能函数先放在顺序结构中。这只是一个方法,如下图所示,还有其他方法可以确定执行顺序。
相关信息
IMAQ图像需要在PC内存中创建图像缓存区。每个缓存区都有一个唯一的名称,这些缓存区可以通过指针在LabVIEW中访问。因此,LabVIEW中的图像数据类型实际上是对存储图像的特定存储位置的引用。
这样做的原因是图像通常占用大量内存(与更原始的数据类型相比)。预分配的存储空间消除了每次对图像进行处理时不断地为同一图像重新分配存储器的需要。
由于LabVIEW中图像的数据线表示的是存储器中的特定位置,而存储在该位置的数据可能经常更改,因此控制访问图像缓冲区的各步骤的执行顺序非常重要。由于图像打破了典型的数据流模式,因此会遇到在处理使用其他数据类型时不会遇到的竞争条件。
需要说明的是,上述的例程和文档,都是可以下载的,双击即可打开,其中压缩文件是可以采用粘贴复制的方式,拷贝到硬盘上。这不是图片,各位小伙伴看到后尝试一下,这个问题就不用加微信咨询了。有关LabVIEW编程、LabVIEW开发等相关项目问题,可联系我们。
楼主最近还看过