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.mfbz.cn/a/359400.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录day15--二叉树的应用3

LeetCode110--平衡二叉树 题目描述: 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 示例 1: 输入&#xff1a…

Kotlin快速入门系列8

Kotlin的泛型 与Java一样,Kotlin也提供泛型。泛型,即 "参数化类型",将类型参数化,可以用在类,接口,方法上。可以为类型安全提供保证,消除类型强转的烦恼。声明泛型类的格式如下&…

《CSS3》田字网格背景(外实线内虚线)的实现

一、前言 记录一些有趣的CSS实现方式,总所周知,当一段效果可以通过CSS实现的时候,绝不使用Javascript来实现,因此记录一些有意思的CSS效果,一来是方便自己学习,另一来是方便以后在需要使用到的时候能快速找…

基于yolov2深度学习网络的视频手部检测算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 输入mp4格式的视频文件进行测试,视频格式为1080p30. 2.算法运行软件版本 matlab2022a 3.部分核心程序 ..........................…

burp靶场--xss下篇【16-30】

burp靶场–xss下篇【16-30】 https://portswigger.net/web-security/all-labs#cross-site-scripting 实验16:允许使用一些 SVG 标记的反射型 XSS ### 实验要求: 该实验室有一个简单的反射型 XSS漏洞。该网站阻止了常见标签,但错过了一些 S…

win wsl2 Ubuntu-22.04 设置时间为国内时间

使用 wsl2 安装 Ubuntu-22.04 后 时间不正确,主要有两个原因 时区设置不正确,国内为京八区。 时区正确后,没有同步时间。(大部分人容易忽略这一点) Linux 默认情况下使用 UTC 格式作为标准时间格式,如果在…

云原生Kubernetes: Ubuntu 安装 K8S 1.23版本(单Master架构) 及故障恢复

目录 一、实验 1.环境 2.安装 Ubuntu 3.连接Ubuntu 4.master节点安装docker 5.node节点安装docker 6.master节点安装K8S 7.添加K8S工作节点 8.安装网络插件calico 9.故障 10.故障恢复 11.测试k8s网络和coredns 二、问题 1.Ubuntu如何修改镜像源 2.Ubuntu和Windo…

STM32F407移植OpenHarmony笔记3

接上一篇,搭建完环境,找个DEMO能跑,现在我准备尝试从0开始搬砖。 首先把/device和/vendor之前的代码全删除,这个时候用hb set命令看不到任何项目了。 /device目录是硬件设备目录,包括soc芯片厂商和board板级支持代码…

Qt 基础之QDataTime

Qt 基础之QDataTime 引言一、获取(设定)日期和时间二、时间戳三、时间计算 (重载运算符) 引言 QDataTime是Qt框架中用于处理日期和时间的类。它提供了操作和格式化日期、时间和日期时间组合的功能。QDataTime可以用于存储和检索日期和时间、比较日期和时间、对日期和时间执行算…

华为——NGFW Module安装在集群交换机上,二层双机负载分担部署,交换机重定向引流

NGFW Module安装在集群交换机上,二层双机负载分担部署,交换机重定向引流 业务需求 如图1所示,两台交换机集群组网,两块NGFW Module分别安装在两台交换机的1号槽位组成双机负载分担组网。NGFW Module工作在二层,也就是…

FileViewer纯前端预览项目Vue2 demo

FileViewer 项目Vue2 demo 本demo基于vue-clijsvue2.x构建,如果您需要vue3版本的demo,请前往main分支。 适用于Vue2 Webpack,本集成方法要求最低Webpack版本为5,也就是Vue Cli Service 5.0.0以上,当然,if…

响应式Web开发项目教程(HTML5+CSS3+Bootstrap)第2版 例5-4 Document

代码 <!doctype html> <html> <head> <meta charset"utf-8"> <title>Document</title> </head><body> <canvas id"cavsElem" width"400" height"600">您的浏览器不支持Canvas…

flutter module打包成framework引入原生工程

Flutter - 将 Flutter 集成到现有项目&#xff08;iOS - Framework篇&#xff09; 本篇文章大幅参考了 caijinglong 大佬的总结文章&#xff1a; 把flutter作为framework添加到已存在的iOS中[1] 用 Flutter 来开发&#xff0c;从来都不可能是新开的一个纯 Flutter 项目&#xf…

【LVGL源码移植环境搭建】

LVGL源码移植&环境搭建 ■ LVGL源码移植■ 下载LVGL源码■ 修改LVGL文件夹■■■■ 视频链接 Ubuntu模拟器环境建置 ■ LVGL源码移植 ■ 下载LVGL源码 LVGL源码 我们以选择v8.2.0为例&#xff0c;选择8.2.0下载 ■ 修改LVGL文件夹 1.我们只需要关注这5个文件即可&…

java常量和kotlin常量

在java中使用final声明常量在kotlin中使用const val声明常量 常量在编译为字节码后会直接把调用常量的地方直接替换为常量值&#xff0c;示例如下&#xff1a; public class ConstDemo {public static final String NAME "Even";private static final int ID 100…

PythonSSTI漏洞

一&#xff0c;python内置PYC反编译&#xff1a; pyc文件&#xff0c;就是python的代码生成的字节码文件&#xff0c;有些类似于Java中的.class文件&#xff0c;pyc文件可以经过本地python解释器进行运行&#xff0c;从而实现跨平台。 也就是说我们得到了.pyc文件&#xff0c;就…

Selenium 隐藏浏览器指纹特征的几种方式

我们使用 Selenium 对网页进行爬虫时&#xff0c;如果不做任何处理直接进行爬取&#xff0c;会导致很多特征是暴露的 对一些做了反爬的网站&#xff0c;做了特征检测&#xff0c;用来阻止一些恶意爬虫 本篇文章将介绍几种常用的隐藏浏览器指纹特征的方式 1. 直接爬取 目标对…

vector的相关概念及常用接口

vector的基本概念 功能&#xff1a; vector容器与数组非常类似&#xff0c;也称单端数组&#xff08;动态数组&#xff09; vector容器的内部结构图示&#xff1a; vector与普通数组之间的区别&#xff1a; vector可以动态扩展&#xff0c;而普通数组是静态空间&#xff0c…

STM32——ADC

STM32——ADC 1.ADC介绍 ADC是什么&#xff1f; 全称&#xff1a;Analog-to-Digital Converter&#xff0c;指模拟/数字转换器! ADC性能指标 量程&#xff1a;能测量的电压范围分辨率&#xff1a;ADC能辨别的最小模拟量&#xff0c;通常以输出二进制数的位数表示&#xf…

openGauss学习笔记-211 openGauss 数据库运维-高危操作一览表

文章目录 openGauss学习笔记-211 openGauss 数据库运维-高危操作一览表211.1 禁止操作211.2 高危操作 openGauss学习笔记-211 openGauss 数据库运维-高危操作一览表 各项操作请严格遵守指导书操作&#xff0c;同时避免执行如下高危操作。 211.1 禁止操作 表1中描述在产品的操…
最新文章