当前位置: 首页 > ops >正文

LabVIEW 中不同 VI 间图像传递方法解析

在 LabVIEW 开发过程中,经常会遇到需要在不同 VI 之间传递图像数据的情况。比如在一些机器视觉检测系统中,子 VI 负责图像采集,主程序需要实时显示采集到的图像。同时,在实践中我们发现,采用共享变量或队列等常规数据传递方式来传递图像时,会出现图像闪烁问题 ,而在单个 VI 内显示图像却不会有此现象。那么,如何高效且稳定地在不同 VI 间传递图像呢?

常规数据传递方式的局限性

共享变量

共享变量在 LabVIEW 中常用于不同 VI 间的数据交互。但当用于传递图像时,由于其数据更新机制,会不断地重新读取和写入数据。而图像数据量通常较大,频繁的读写操作会导致显示时出现闪烁现象。例如在一个持续采集并显示图像的系统中,使用共享变量传递图像数据,随着采集的持续,闪烁会越来越明显,严重影响显示效果和系统的稳定性。

队列

队列在 LabVIEW 中可用于多线程间的数据传递。然而在传递图像时,队列的入队和出队操作,以及数据在队列中的等待和传输过程,可能会导致图像数据的不连续或延迟。这使得在不同 VI 间显示图像时,出现闪烁或者卡顿的情况。比如在一个图像采集与处理的双 VI 系统中,采集 VI 将图像数据放入队列,处理 VI 从队列中取出数据显示,实际运行中会发现图像显示不稳定,存在闪烁问题。

基于 NI VISION 的图像传递方法

NI VISION 是 LabVIEW 中用于机器视觉处理的重要工具包。其独特之处在于,图像数据是存储在内存的地址引用中。这就为不同 VI 间传递图像提供了一种简便且高效的方式:只要在不同的 VI 中调用相同名称的内存引用,就可以显示该内存地址中的图像内容。

具体实现步骤

  1. 图像采集 VI(以左边采集功能 VI 为例):在该 VI 中,首先通过图像采集设备(如工业相机)获取图像数据。然后,使用 NI VISION 相关函数对图像进行初始化处理,将处理后的图像数据存储在一个特定名称的内存引用中(例如命名为 “Image” )。在程序框图中,可以看到图像采集设备的驱动节点连接到 NI VISION 的图像操作函数,最后将图像数据存入指定内存引用。

  2. 图像显示 VI(以右边显示功能 VI 为例):在这个 VI 中,无需再次对图像进行采集等操作。只需创建一个与采集 VI 中相同名称(即 “Image” )的内存引用。通过 NI VISION 的图像显示函数,直接从该内存引用中读取图像数据并显示在前面板的图像显示控件上。在程序框图中,关键操作是建立对 “Image” 内存引用的读取,并连接到图像显示控件。

优势分析

这种基于 NI VISION 内存引用的图像传递方式,避免了共享变量和队列传递图像时的弊端。由于不同 VI 都是直接从相同的内存地址引用图像数据,不存在数据重复读写或在队列中等待传输导致的不连续问题。因此,能够实现图像在不同 VI 间的稳定、无闪烁显示。在实际的机器视觉项目,如产品外观检测、缺陷识别等应用中,这种方式能够确保操作人员清晰、稳定地观察到采集的图像,为后续的图像处理和分析提供可靠的基础。

总结

在 LabVIEW 中进行不同 VI 间的图像传递时,基于 NI VISION 内存引用的方法是一种行之有效的解决方案。它克服了共享变量和队列传递图像时出现的闪烁问题,为 LabVIEW 机器视觉相关项目的开发提供了稳定、高效的图像传递途径。工程师在实际项目开发中,可根据项目需求合理选择图像传递方式,以提升系统的整体性能和用户体验。

http://www.xdnf.cn/news/9352.html

相关文章:

  • 数据结构-排序(1)
  • 基于seal密码库的格加密算法的原理、实现与应用
  • 6个月Python学习计划 Day 7 - 复盘 + 测试日
  • 压缩包方式在Linux和Windows下安装mongodb
  • zynq7020 shm共享内存和OCM
  • Rust 和 Python 如何混合使用
  • 面试题——计算机网络:HTTP和HTTPS的区别?
  • MySQL问题:MVCC是什么?
  • 从解决一个分享图片生成的历史bug出发,详解LayoutInflater和View.post的工作原理
  • java 递归地复制文件夹及其所有子文件夹和文件
  • LeetCode-栈-每日温度
  • 《Discuz! X3.5开发从入门到生态共建》第1章 Discuz! 的前世今生-优雅草卓伊凡
  • 界面控件DevExpress WinForms v24.2新版亮点:富文本编辑器功能全新升级
  • Java五种方法批量处理List元素全解
  • 【操作系统】内核态、用户态
  • [Python] 避免 PyPDF2 写入 PDF 出现黑框问题:基于语言自动匹配系统字体的解决方案
  • CS144 - LAB0
  • 文本编辑器vi的使用
  • SECS/GEM协议中Report ID、SV ID、CE ID与S2F33/S2F35/S2F37指令的关系及配置示例
  • 专业库室联管联控系统|门禁联管联控系统
  • Browser-use快速了解
  • 流光溢彩的数字长河:Linux基础IO,文件系统的诗意漫游
  • Google Play的最新安全变更可能会让一些高级用户无法使用App
  • 函数抓取图片microsoft excel与wps的区别
  • 【n-grams】基于统计方法的语言模型
  • 深入理解设计模式之中介者模式
  • 基于Springboot + vue3实现的图书管理系统
  • 【Mysql开启慢查询日志】
  • 泰迪杯特等奖案例深度解析:基于联邦时空图卷积网络的跨区域碳排放协同预测与优化系统
  • 详解Kubernetes Scheduler 的调度策略