【Python】瓶装液位检测系统

news/2024/11/24 10:51:37/

文章目录

    • 概要
    • 效果图
    • 整体架构流程
    • 技术细节

概要

本代码是一个简单的GUI应用程序,用于瓶装液位检测系统。

效果图

在这里插入图片描述
在这里插入图片描述

整体架构流程

整体架构流程如下:

  1. 创建GUI窗口和必要的部件:

    • 创建一个主窗口(root)作为GUI应用程序的容器。
    • 设置窗口的大小和标题。
    • 创建用于显示图像的Label部件(img_label)。
    • 创建用于显示检测结果的Label部件(result_label)。
    • 创建用于加载图片的按钮(load_button)。
    • 创建用于执行液位检测的按钮(detect_button)。
  2. 加载图片:

    • 当用户点击"加载图片"按钮时,触发load_image()函数。
    • 在函数中,使用文件对话框选择一个瓶子的图片文件。
    • 如果选择了文件,则读取图片,将其从BGR颜色空间转换为RGB颜色空间,并将其显示在GUI窗口中。
  3. 液位检测:

    • 当用户点击"液位检测"按钮时,触发detect_liquid()函数。
    • 在函数中,首先将图像转换为灰度图像。
    • 对灰度图像进行二值化处理,得到黑白二值图像。
    • 使用轮廓检测函数找到图像中的轮廓。
    • 找到最大的轮廓,表示瓶子的轮廓。
    • 计算轮廓的面积和外接矩形的面积。
    • 根据面积比例判断液位是否充足,并更新检测结果的文本显示。
  4. 运行GUI应用程序:

    • 调用root.mainloop()函数,启动GUI应用程序的主循环。
    • 程序将等待用户交互事件,如按钮点击或窗口关闭事件。

用户可以通过点击"加载图片"按钮选择一张瓶子的图片,然后点击"液位检测"按钮进行液位检测。检测结果将显示在GUI窗口中的检测结果区域。整体架构流程使用户能够方便地加载图片并执行液位检测操作,并即时显示结果。

技术细节

  1. 导入必要的模块:

    • cv2:OpenCV库,用于图像处理和计算机视觉任务。
    • numpy:用于数值计算和数组操作。
    • tkinter:Python的标准GUI库,用于创建GUI应用程序。
    • filedialog:tkinter的子模块,用于打开文件对话框选择图片文件。
    • PIL:Python Imaging Library,用于图像处理和操作。
  2. 创建GUI窗口:

    • 创建一个名为root的Tk对象,作为主窗口。
    • 设置窗口的大小为800x600像素。
    • 设置窗口的标题为"瓶装液位检测系统"。
  3. 图像显示区域:

    • 创建一个Label部件,用于显示图像。
    • 将该部件放置在窗口的左侧。
  4. 检测结果显示区域:

    • 创建一个Label部件,用于显示检测结果的文本。
  5. 加载图片并显示:

    • 定义一个load_image()函数,用于加载并显示图片。
    • 在函数中,通过文件对话框(filedialog)选择一个图片文件。
    • 如果选择了文件,则使用OpenCV的imread()函数读取图片。
    • 将读取的图片从BGR颜色空间转换为RGB颜色空间。
    • 使用PIL库的Image.fromarray()函数将图像转换为PIL图像对象。
    • 使用PIL库的ImageTk.PhotoImage()函数将PIL图像对象转换为可显示的图像对象。
    • 通过配置img_label部件的image属性,将图像显示在GUI窗口中。
  6. 液位检测:

    • 定义一个detect_liquid()函数,用于执行液位检测。
    • 在函数中,首先将图像转换为灰度图像。
    • 然后对灰度图像进行二值化处理,将图像转换为黑白二值图像。
    • 使用OpenCV的findContours()函数找到图像中的轮廓。
    • 找到最大的轮廓,即代表瓶子的轮廓。
    • 计算轮廓的面积和外接矩形的面积。
    • 根据面积比例判断液位是否充足,并更新检测结果的文本。
  7. 加载图片按钮:

    • 创建一个Button部件,用于触发加载图片的操作。
    • 按钮上显示的文本为"加载图片"。
    • 按钮点击后执行load_image()函数。
  8. 液位检测按钮:

    • 创建一个Button部件,用于触发液位检测的操作。
    • 按钮上显示的文本为"液位检测"。
    • 按钮点击后执行detect_liquid()函数。
  9. 运行GUI应用程序:

    • 调用root.mainloop()函数,启动GUI应用程序的主循环,等待用户交互事件。

http://www.ppmy.cn/news/825735.html

相关文章

springcloud笔记二

配置管理服务是共有的,结合微服务自身的配置。这样核心配置更改就无需逐个更改 配置管理: 首先新建一个配置管理 Data ID为配置文件的名称 一般为项目名称-项目环境yaml,如userservice-dev.yaml 编写配置内容,发布 获取nacos配置信息: ​​…

pubg服务器维护要多长时间,绝地求生4月12日维护到几点/维护多长时间 绝地求生4.12维护什么时候好/能进游戏...

本文导航第2页:更新内容 更新内容 以下是是具体的更新内容。 游戏体验 调整了蓝圈(毒圈)的平衡性 - 缩短了白圈(安全区)缩圈间隔时间。现在玩家很难长时间停留在一个地区 - 降低了蓝圈的最大移动速度。比赛中,蓝圈的缩小速度会变得越来越慢 - 增加了第7轮…

绝地求生op.gg查找战绩

《绝地求生》(PUBG)是由韩国Krafton工作室开发的一款战术竞技型射击类沙盒游戏。2022年1月12日,该游戏于主机和PC上可免费下载游玩。 在该游戏中,玩家需要在游戏地图上收集各种资源,并在不断缩小的安全区域内对抗其他玩家,让自己生…

2023年开源社执行委员会介绍

总起 开源社的各项工作主要分为内部事务、对外事务与专项工作三大类。整体而言,基础设施、财务、法律与成员发展等工作较为偏向于内部事务,而活动、媒体、社区合作、顾问委员会服务、国际接轨等工作偏向于对外联络与展现,而教育、公益、硬件、…

操作系统学习总结 进程管理篇之进程

目录 进程的概念 进程 中断 并发与并行 进程和程序的关系 进程的状态 状态延申 进程的控制结构 进程描述信息: 进程控制和管理信息: 资源分配清单: CPU相关信息: PCB如何组织 进程的控制 创建进程 终止进程 阻塞进…

某数字安全卫士的软件管家提取版

不少朋友有定期重装系统的需求,每次装机过后安装软件的过程都会变得如此漫长和痛苦,下个管家或者卫士吧,倒是有专门的软件管理功能,可以轻松下载到自己需要的软件,但是管家或卫士本身会在你的“允许”下安装各种各样的…

注意事项-关闭腾讯管家和360杀毒软件

注意事项-关闭腾讯管家和360杀毒软件 MP4没有声音解决办法 用格式工厂将MP4转成MP3 然后放到会声会影的音频里就可以了 转载于:https://www.cnblogs.com/zff193/p/8093338.html

360+linux浏览器下载官网下载,360极速浏览器下载

360极速浏览器是基于谷歌开源Chromium开发的浏览器,和国内众多的双核浏览器一样,360极速浏览器针对中国用户的使用习惯做了非常多的功能优化,例如鼠标手势,超级拖拽等。 360极速浏览器,1分钟了解 相关APP 小编寄语 曾经,当大部分的xp电脑ie因为慢的要死而被众多用户广泛诟…