Labview 图像处理系统设计

1. 总体主界面设计

前面板界面如下:

界面总共分为一个实时采集加拍照控制模块,两个图像显示模块(实时图像显示和直方图显示)以及三个图像处理模块

前面板中各模块具体功能及使用说明如下:
1.当实时按钮关闭时(灯暗)系统所处理的图像均为静态图像,此时点击LOAD IMAGE 按钮弹出文件对话框选择需要处理的图片

2.当实时按钮开启时(绿灯)系统通过摄像头实时采集图片进行处理

3.DETECT EDGES按钮为开启边缘检测,Method列表框中可以选择边缘检测所使用的方法

4.CANNY DETECTOR 按钮表示使用CANNY方法进行边缘检测,Canny/Filter Parameters框中可以进行相关参数的设置

5.点击保存图片按钮可以实现静态处理后图像的保存以及实时处理后图像的保存

6.相机选择:选择采集所使用的摄像头

7.拍照:在实时采集的过程中进行拍照并保存照片,照片的路径及名称由图片保存路径控件以及设定文件名控件进行输入

8.反色按钮实现图像反色

9.阈值化按钮实现图像的阈值化,其中阈值化的范围通过水平滑动杆滑动设置

10.对称、旋转、平移操作是通过容器中的选项卡控件实现的,在对称选项中通过列表框选择对称的方式然后点击开启按钮实现;在旋转选项中,通过旋钮实现360°的旋转;在平移操作中,通过垂直和水平滑动杆分别实现垂直方向和水平方向的平移操作

2. 程序框图设计

(1)非实时导入图片文件

通过按钮与条件结构实现,按钮点击后条件结构中打开文件对话框,读取文件,通过新建的窗口显示,还可以调用灰度直方图控件显示图片的灰度直方图

(2)实时采集图像和拍照

上图所示的是一个实时采集的模块,主要是通过选择相机,打开相机,grab设置,以及图像的grab控件实现,其中图像的grab控件需要放入while循环中以实现实时采集,接入显示控件中进行显示

拍照功能的实现是条件结构中,使用控件得到循环中上一次抓取的图像,然后通过创建路径函数以及写文件控件将图像进行保存

需要注意的是,实时采集的图像如果需要用于后续的图像处理则通过控件转为灰度图像再进行处理

(3)边缘检测

将实时采集的图像或者打开的静态图像接入边缘检测控件的src接口,再将通过复制控件所复制的目标图像接入检测控件的dst接口,最后还需通过Method方法控制检测方法完成边缘检测功能,同样canny边缘检测利用控件进行统一的操作,最终通过窗口输出处理后的图片

(4)反色、阈值化

反色和阈值化是利用条件结构再分别通过控件和控件实现的,接口的连线与边缘检测一样,其中反色没有参数设置,而阈值化控件中还需接入前面板所示的滑动杆来调整范围

(5)对称、旋转、平移

对称、旋转、平移通过选项卡控件来进行选择。对称中有一个按钮控制是否进行操作,然后通过控件实现,控件除了接入图像外还需要接入选择控件用来选择对称方式; 旋转利用控件,需接入旋钮控件实现控制;平移利用控件并接入水平和垂直滑动杆进行控制

(6)保存处理图片

通过文件对话框选择保存的路径以及格式再与处理后的的图片一起接入控件实现BMP文件的写入即保存

(7)处理图片打开方式控件及其输出

我的处理后的图片都是通过控件进行显示的,后续的保存和直方图显示则需要利用该控件的输出,连线需要如下:

条件为真时,输出与结构边框连接,条件为假时,将dst图片统一接入该边框点,进行这样一个操作之后我发现在静态处理时,只需要选择一个此显示控件,将输出图片接口接入到保存控件或者直方图控件中即可完成统一的操作,而不需要将每一个图像处理操作条件结构中的控件的输出接到别的控件,但是在实时操作时却又不能完成这样的统一操作,还需要逐个接入。

除此之外,利用该控件在进行不同图像处理的转换时也可以直接覆盖

(8)按钮、旋钮等控件

在进行实时处理时,发现按钮的点击必须设置为单击时转换,并且需要在进行该处理时一直保持开启状态才行,而如果开启后在没有关闭的情况下又选择了另一个按钮进行开启即两个按钮都是打开的,那么程序判定的是以离当前最近的一次操作进行处理的。在静态操作时,每一次点击按钮后在条件结构中我再对按钮的状态取反避免一直开启,否则的话,例如保存按钮如果点击一次后将会一直开启那么会一直弹出文件对话框阻止我们的后续操作。最后还需要对所有的控件在最外层循环外进行一个初始化操作如下:

3.程序演示

接下来对程序进行部分功能的演示

运行程序后无论静态还是实时都会开启摄像头实现显示:

(1)静态

加载图片:

选择后弹出加载的图片:

边缘检测:

Canny:

阈值化:

(2)实时

       同时显示实时图像的灰度图以及对应的灰度直方图

Canny:

反色:

上下对称:

旋转:

平移:

(3)保存图像

成功保存实时采集的图像

4. 总结

labview上手也挺容易,可以自己去随意设计,此外它还可以与机器学习结合,共同实现一个完整的系统。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/657133.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql .ibd 文件过大清理方法

问题 有一个 info_track 表用来临时存储告警推送数据,逻辑处理完成后,会执行 Delete 语句删除对应的记录。 问题:项目现场运行了几个月后,发现磁盘空间莫名占用了过多的存储,> 100GB,且无法释放。 生…

向上调整向下调整算法

目录 AdjustUp向上调整 AdjustDown向下调整 AdjustUp向上调整 前提是:插入数据之后,除去插入的数据其他的数据还是为堆 应用:插入数据。 先插入一个10到数组的尾上,再进行向上调整算法,直到满足堆。 性质&#xff1…

基础算法(二)

一 高精度计算 int能表示范围为2^32,这看起来很大,但在大数据时代的如今,不说是int 哪怕是long long也是不够的,那么为了使用或计算这些超出或远超整形大小的数,我们这些数的计算方法称为高精度计算。 (1)…

代码随想录 Leetcode113. 路径总和 II

题目&#xff1a; 代码(首刷看解析 2024年1月30日&#xff09;&#xff1a; class Solution { public:vector<int> temp;vector<vector<int>> res;void recursion(TreeNode* cur, int sum) {if (!cur->left && !cur->right && sum 0…

Java进击框架:Spring-WebFlux(九)

Java进击框架&#xff1a;Spring-WebFlux&#xff08;九&#xff09; 前言Mono和FluxSpring WebFlux反应的核心DispatcherHandler带注释的控制器WebFlux配置 WebClient配置retrieve()交换请求正文Filters属性语境同步使用测试 RSocket反应库 前言 Spring框架中包含的原始web框…

Jmeter分布式场景

Jmeter分布式 1. 为什么使用Jmter分布式测试 1.1 需求 对学院接口(查询学院-所有)进行1000用户并发访问&#xff0c;测试服务器处理批量请求能力1.2 现状 我们单台电脑由于配置(CPU、内存)问题&#xff0c;最模拟500用户时&#xff0c;就出现卡死现象按照一般的压力机配置&…

1. 两数之和(力扣LeetCode)

文章目录 1. 两数之和题目描述哈希表&#xff1a;map二分查找暴力&#xff1a;双重for循环 1. 两数之和 题目描述 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可…

24. 两两交换链表中的节点(力扣LeetCode)

文章目录 24. 两两交换链表中的节点题目描述解题思路只使用一个临时节点使用两个临时节点 24. 两两交换链表中的节点 题目描述 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff0…

angular2 开发遇到的问题

1&#xff1a;插件使用&#xff0c;要一同引入 不然报错 “ \ Changes detected. Rebuilding...X [ERROR] NG8001: sf-dashboard-overview is not a known element:”

微信扫码登录流程

微信官方文档使用 搜索“微信开放平台”点击导航栏的“资源中心”点击“网站应用”下的“微信登录功能”地址微信扫码登录是基于OAuth2的&#xff0c;所以需要第三方应用&#xff08;就是实现微信扫码登录的应用&#xff09;成为微信的客户端&#xff0c;获取AppId和AppSecret…

Linux 进程管理

一、简述 当运行一个程序的时候&#xff0c;那么运行的这个程序就叫做进程。程序&#xff0c;是一个静态的概念统称为软件&#xff0c;相当于一个被编译好可执行的二进制文件&#xff0c;同时程序可以长期存在系统中&#xff1b;进程&#xff0c;是一个动态的概念&#xff0c;…

RHCE练习3

1.基于域名www.openlab.com可以访问网站内容为 welcome to openlab 2.给该公司创建三个子界面分别显示学生信息&#xff0c;教学资料和缴费网站&#xff0c;基于www.openlab.com/student 网站访问学生信息&#xff0c;www.openlab.com/data网站访问教学资料www.openlab.com/mo…

Unix环境高级编程-学习-04-匿名管道PIPE

目录 一、环境 二、介绍 三、C标准函数介绍 1、pipe 2、popen 3、pclose 4、注意 四、宏 五、常见的管道用法 1、一对一&#xff08;父进程读子进程写一条管道&#xff09; 2、一对一&#xff08;父进程写子进程读一条管道&#xff09; 3、一对多&#xff08;父进程…

leetcode—跳跃游戏—贪心算法

1 跳跃游戏1 给你一个非负整数数组 nums &#xff0c;你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标&#xff0c;如果可以&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&a…

vue-computed 计算属性

一、computed 计算属性 在Vue应用中&#xff0c;在模板中双向绑定一些数据或者表达式&#xff0c;但是表达式如果过长&#xff0c;或者逻辑更为复杂 时&#xff0c;就会变得臃肿甚至难以维护和阅读&#xff0c;例如&#xff1a; <div>写在双括号中的表达式太长了,不利于阅…

Linux 入门基础知识(一)—— Linux的基本使用

Linux 入门基础知识 一、Linux的基本使用和配置1.1、终端1.2、消耗内存1.3、运行级别1.6、登录前欢迎语1.5、登录后欢迎语1.6、shell1.7、ps aux1.8、设置主机名1.9、whoami和who am i1.10、命令提示符 二、Linux执行命令的过程详解和命令类型2.1、命令执行2.2、hash缓存表2.3、…

张维迎《博弈与社会》纳什均衡与囚徒困境博弈(2)囚徒困境博弈

囚徒困境大家应该都比较熟悉了&#xff0c;我觉得这篇的意义大概在与&#xff0c;经济学术语的运用&#xff1f; 囚徒困境&#xff1a;个人理性与集体理性的矛盾 假定有两个犯罪嫌疑人共同作案。警察抓住他们以后&#xff0c;分开拘押&#xff0c;并告诉他们&#xff1a;可以选…

Chiplet,汽车“芯”风向

异构集成、高速互联、算力灵活可扩展正在成为新一轮汽车芯片竞争的焦点。尤其是随着以ChatGPT为代表的大数据、大模型产品在车端的落地&#xff0c;对于芯片的要求还在持续提升。 本周&#xff0c;12家日本汽车制造商&#xff08;包括丰田、日产、本田等&#xff09;、零部件制…

设计与实现基于Java+MySQL的考勤发布-签到系统

课题背景 随着现代经济的迅速发展&#xff0c;电子考勤签到服务已经渗透到人们生活的方方面面&#xff0c;成为不可或缺的一项服务。在这个背景下&#xff0c;线上签到作为考勤签到的一种创新形式&#xff0c;为用户提供了便捷的操作方式&#xff0c;使得任务签到、个人签到记…

代码随想录算法训练营第35天 | 860.柠檬水找零 406.根据身高重建队列 452.用最少数量的箭引爆气球

柠檬水找零 局部最优&#xff1a;收到20元时优先找零10元5元&#xff0c;不够再找零3个5元&#xff0c;因为5元可以找零20和10&#xff0c;更有用。全局最优&#xff1a;完成所有的找零。 class Solution { public:bool lemonadeChange(vector<int>& bills) {int fi…