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

深度学习基于YOLOv8的苹果叶片病害检测系统 Python + PyQt5可视化界面 苹果病害检测数据集的训练及应用

智慧农业巡检-基于YOLOv8的苹果叶片病害检测系统可以选择模型[钉子]内含苹果叶片病害数据集训练集18451验证集5270测试集2638Rust - 锈病Mosaic - 花叶病Grey_spot - 灰斑病Brown_Spot - 褐斑病Alternaria_Boltch - 链格孢枯萎病也可自行替换模型使用该界面做其他实现检测目标自定义完整源码源文件已标注的数据集训练好的模型环境配置教程程序运行说明文档Python PyQt5可视化界面以下是构建该系统的详细代码分为环境配置、模型训练和PyQt5 界面实现三个部分。系统架构概览核心算法Ultralytics YOLOv8 (支持 n/s/m 等不同尺寸模型)GUI 框架PyQt5图像处理OpenCV数据结构Pandas (用于表格展示)第一步环境配置与依赖你需要创建一个 Python 环境并安装必要的库。requirements.txtultralytics8.0.0 PyQt55.15.0 opencv-python4.5.0 matplotlib3.3.0 pandas1.1.0 seaborn0.11.0 numpy1.18.5安装命令pipinstall-rrequirements.txt第二步数据集配置与模型训练假设你已经按照描述整理好了数据集目录结构datasets/ ├── images/ │ ├── train/ │ ├── val/ │ └── test/ ├── labels/ │ ├── train/ │ ├── val/ │ └── test/ └── data.yamldata.yaml(数据集配置文件)path:../datasets# 数据集根路径train:images/train# 训练集路径val:images/val# 验证集路径test:images/test# 测试集路径# 类别数量和名称nc:5names:[Rust,Mosaic,Grey_spot,Brown_Spot,Alternaria_Boltch]train.py(训练脚本)fromultralyticsimportYOLOdeftrain_model():# 1. 加载预训练模型 (n, s, m 等)modelYOLO(yolov8n.pt)# 2. 开始训练# 根据你的描述150 epochs, imgsz640 (默认)resultsmodel.train(datadatasets/data.yaml,epochs150,imgsz640,batch16,nameexp-apple-disease,device0# 如果有GPU设置为0否则为cpu)if__name____main__:train_model()第三步PyQt5 可视化界面代码这是系统的核心部分对应你提供的截图界面。代码实现了图片加载、模型推理、结果显示绘图表格以及参数设置功能。MainProgram.pyimportsysimportcv2importtorchimportnumpyasnpimportpandasaspdfromPyQt5.QtWidgetsimport(QApplication,QMainWindow,QMessageBox,QFileDialog,QTableWidgetItem,QHeaderView)fromPyQt5.QtGuiimportQImage,QPixmap,QFontfromPyQt5.QtCoreimportQt,QThread,pyqtSignalfromultralyticsimportYOLO# --- 全局变量 ---CLASSES[Rust,Mosaic,Grey_spot,Brown_Spot,Alternaria_Boltch]COLORS[(255,0,0),(0,255,0),(0,0,255),(255,255,0),(255,0,255)]# 对应类别的颜色classDetectionThread(QThread):# 自定义信号用于传输处理后的图像和结果数据signal_update_uipyqtSignal(np.ndarray,list)def__init__(self,model,image_path,conf_thres):super().__init__()self.modelmodel self.image_pathimage_path self.conf_thresconf_thresdefrun(self):# 读取图片imgcv2.imread(self.image_path)img_rgbcv2.cvtColor(img,cv2.COLOR_BGR2RGB)# 推理resultsself.model(img_rgb,confself.conf_thres)resultresults[0]# 解析结果并绘图boxesresult.boxes detections[]forboxinboxes:# 获取坐标和类别x1,y1,x2,y2map(int,box.xyxy[0].tolist())confbox.conf[0].item()clsint(box.cls[0].item())labelCLASSES[cls]# 记录数据用于表格显示detections.append({序号:len(detections)1,类别:label,置信度:f{conf:.2%},坐标:f[{x1},{y1},{x2},{y2}]})# 在图像上绘制矩形框和标签colorCOLORS[cls%len(COLORS)]cv2.rectangle(img,(x1,y1),(x2,y2),color,2)cv2.putText(img,f{label}{conf:.2f},(x1,y1-10),cv2.FONT_HERSHEY_SIMPLEX,0.5,color,2)self.signal_update_ui.emit(img,detections)classMainWindow(QMainWindow):def__init__(self):super().__init__()self.setWindowTitle(基于YOLOV8的苹果叶片病害检测系统)self.setGeometry(100,100,1200,800)# --- 初始化模型 ---# 默认加载 yolov8n实际使用时请替换为你训练好的 best.pt 路径self.modelYOLO(runs/detect/exp-apple-disease/weights/best.pt)self.current_image_path# --- 初始化UI (简化版布局逻辑) ---# 注意实际代码中建议使用 Qt Designer 生成 .ui 文件并加载# 这里为了演示逻辑使用纯代码构建核心功能self.init_ui()definit_ui(self):# 这里省略繁琐的布局代码重点展示按钮连接逻辑# 假设你有按钮btn_open_img, btn_detect, table_result 等# 示例打开图片# self.btn_open_img.clicked.connect(self.open_image)# 示例开始检测# self.btn_detect.clicked.connect(self.start_detection)passdefopen_image(self):path,_QFileDialog.getOpenFileName(self,选择图片,.,Image Files (*.png *.jpg *.bmp))ifpath:self.current_image_pathpath# 显示原图逻辑...print(f已加载图片:{path})defstart_detection(self):ifnotself.current_image_path:QMessageBox.warning(self,警告,请先选择图片)return# 获取置信度阈值 (假设有个输入框 self.input_conf)# conf float(self.input_conf.text())conf0.25# 开启子线程进行检测防止界面卡顿self.threadDetectionThread(self.model,self.current_image_path,conf)self.thread.signal_update_ui.connect(self.update_results)self.thread.start()defupdate_results(self,img,detections):# 1. 显示检测后的图片# 将 OpenCV 图像转换为 Qt 图像height,width,channelimg.shape bytes_per_line3*width q_imgQImage(img.data,width,height,bytes_per_line,QImage.Format_RGB888)pixmapQPixmap.fromImage(q_img)# 假设 self.label_show 是显示图片的控件# self.label_show.setPixmap(pixmap.scaled(self.label_show.size(), Qt.KeepAspectRatio))# 2. 填充表格self.table_result.setRowCount(len(detections))forrow,datainenumerate(detections):self.table_result.setItem(row,0,QTableWidgetItem(str(data[序号])))self.table_result.setItem(row,1,QTableWidgetItem(data[类别]))self.table_result.setItem(row,2,QTableWidgetItem(data[置信度]))self.table_result.setItem(row,3,QTableWidgetItem(data[坐标]))# 3. 更新统计信息# self.label_count.setText(f总目标数: {len(detections)})if__name____main__:appQApplication(sys.argv)windowMainWindow()window.show()sys.exit(app.exec_())代码说明DetectionThread 类继承自QThread用于在后台运行 YOLO 推理。如果不使用多线程在处理高分辨率图片或视频时界面会卡死无响应。signal_update_ui信号将处理好的 OpenCV 图像带框和解析出的数据列表发送回主界面。MainWindow 类模型加载在初始化时加载.pt模型文件。图片处理使用cv2.imread读取cv2.cvtColor转换颜色空间OpenCV是BGRQt是RGB。结果可视化图像使用cv2.rectangle和cv2.putText绘制边界框和标签。表格使用QTableWidget动态插入行显示类别、置信度和坐标。扩展性代码中CLASSES列表定义了类别名称。如果你想做其他检测如口罩检测只需更换模型文件并修改这个列表即可。以上代码展示了基于PyQt5和YOLOv8构建病害检测系统的核心实现逻辑。

相关文章:

深度学习基于YOLOv8的苹果叶片病害检测系统 Python + PyQt5可视化界面 苹果病害检测数据集的训练及应用

智慧农业巡检-基于YOLOv8的苹果叶片病害检测系统可以选择模型 [钉子]内含苹果叶片病害数据集 训练集18451,验证集5270,测试集2638 Rust - 锈病 Mosaic - 花叶病 Grey_spot - 灰斑病 Brown_Spot - 褐斑病 Alternaria_Boltch - 链格孢枯萎病也可自行替换模…...

【紧急预警】2026奇点语音助手协议栈存在CVE-2026-XXXX漏洞(NIST已确认,补丁将于大会闭幕前2小时发布)

第一章:【紧急预警】2026奇点语音助手协议栈存在CVE-2026-XXXX漏洞(NIST已确认,补丁将于大会闭幕前2小时发布) 2026奇点智能技术大会(https://ml-summit.org) CVE-2026-XXXX 是一个高危远程代码执行(RCE)…...

MRIcroGL完整指南:医学图像3D可视化终极教程

MRIcroGL完整指南:医学图像3D可视化终极教程 【免费下载链接】MRIcroGL v1.2 GLSL volume rendering. Able to view NIfTI, DICOM, MGH, MHD, NRRD, AFNI format images. 项目地址: https://gitcode.com/gh_mirrors/mr/MRIcroGL MRIcroGL是一款强大的跨平台医…...

AMG8833红外测温实战:在STM32上打造一个简易非接触体温筛查装置

AMG8833红外测温实战:在STM32上打造一个简易非接触体温筛查装置 红外热成像技术正逐渐从专业领域走向日常生活。AMG8833这款8x8红外阵列传感器,以其小巧的体积和合理的价格,成为创客们探索热成像应用的理想选择。本文将带你从零开始&#xff…...

青龙面板进阶玩法:从手动添加脚本到高效管理仓库,这些命令你都会用了吗?

青龙面板高阶管理指南:解锁多账号与仓库的自动化潜能 如果你已经熟悉青龙面板的基础脚本添加操作,却仍在为多账号管理、日志堆积和任务执行效率低下而头疼,那么这篇文章将为你打开新世界的大门。我们将深入探讨那些被多数用户忽略的高级命令…...

N32G430串口DMA接收避坑指南:为什么你的空闲中断处理完数据会乱?

N32G430串口DMA接收避坑指南:为什么你的空闲中断处理完数据会乱? 在嵌入式开发中,串口通信是最基础也最常用的外设之一。对于N32G430这类资源有限的单片机来说,使用DMA配合空闲中断接收不定长数据是一种高效的方式,但…...

转生Day5--函数与约束

大家好,我是程序员无尽冬 ,欢迎大家来到我的专栏。本专栏我将记录我和mysql相爱相杀的点滴 同时也会将它整理为我的个人八股分享给大家 希望大家可以喜欢。前瞻环节上期我们了解了一些dql--查询语言的知识,这期让我们一起学习sql语句中的函数…...

别再只会用Servo库了!手把手教你用Arduino UNO的PWM引脚直接驱动舵机(附串口控制代码)

Arduino舵机控制进阶:从库函数到寄存器级PWM信号生成 在机器人制作和自动化项目中,舵机控制是最基础却至关重要的技能。大多数Arduino初学者都会从Servo库开始,这确实是个快速上手的方案——直到你遇到需要精确控制多个舵机、优化性能或理解底…...

CentOS 7 企业级OpenSSH-9.6p1自动化升级与安全加固实战(含一键脚本)

1. 为什么企业必须升级OpenSSH到9.6p1? 最近帮某金融客户做安全审计时,发现他们200多台CentOS 7服务器还在用OpenSSH 7.4版本。用漏洞扫描工具一查,直接爆出15个高危漏洞,其中最严重的CVE-2023-38408能让攻击者直接绕过认证。这场…...

开源项目管理神器OpenProject:5步搭建你的高效协作中心

开源项目管理神器OpenProject:5步搭建你的高效协作中心 【免费下载链接】openproject OpenProject is the leading open source project management software. 项目地址: https://gitcode.com/GitHub_Trending/op/openproject 在团队协作日益复杂的今天&…...

如何用函数柯里化实现通用的类型判断工具函数

柯里化函数需通过闭包保存参数并动态判断是否满足fn.length,支持多层调用;类型判断应基于Object.prototype.toString.call并封装为可扩展的柯里化谓词函数。curry 函数怎么写才支持多层嵌套调用柯里化不是简单地把参数拆开,关键在「返回新函数…...

LicenseManager 客户端模拟器 v1.0.1 发布:新增许可证编辑、公钥更新等功能

LicenseManager 客户端模拟器 v1.0.1 正式发布,带来许可证本地编辑、公钥动态更新等重要功能,还修复了若干缺陷,适用于多种应用场景。更新亮点之本地许可证创建与修改在 LMClientSimulator GUI 客户端新增「创建/修改许可证」功能&#xff0c…...

告别英文界面:3分钟让Figma秒变中文的终极解决方案

告别英文界面:3分钟让Figma秒变中文的终极解决方案 【免费下载链接】figmaCN 中文 Figma 插件,设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN 还在为Figma的英文界面感到困扰吗?作为一名中文设计师&#x…...

玩转Chrome DevTools,高效调试

玩转Chrome DevTools,高效调试 作为前端开发者,Chrome DevTools是日常调试的利器。它不仅能快速定位问题,还能优化性能、模拟设备环境,甚至分析网络请求。掌握DevTools的技巧,可以大幅提升开发效率。本文将介绍几个实…...

New API:企业级AI模型统一网关架构深度解析与技术实现揭秘

New API:企业级AI模型统一网关架构深度解析与技术实现揭秘 【免费下载链接】new-api A unified AI model hub for aggregation & distribution. It supports cross-converting various LLMs into OpenAI-compatible, Claude-compatible, or Gemini-compatible f…...

OneNote Md Exporter:轻松将OneNote笔记本转换为Markdown格式

OneNote Md Exporter:轻松将OneNote笔记本转换为Markdown格式 【免费下载链接】onenote-md-exporter ConsoleApp to export OneNote notebooks to Markdown formats 项目地址: https://gitcode.com/gh_mirrors/on/onenote-md-exporter 你是否曾为OneNote笔记…...

从脉冲密度到数字音频:深入解析PDM的编码奥秘与实现

1. 脉冲密度调制(PDM)的本质与核心价值 当你用手机录音时,麦克风里的微小振膜随着声波振动,这个连续的物理运动如何变成手机里存储的0和1?这背后藏着PDM技术的精妙设计。不同于常见的PCM编码,PDM采用了一种…...

故障发现效率优异,告警响应速度有待优化

Anthropic公司上周紧急限制了其Mythos Preview模型,因为该模型自主发现并利用了所有主流操作系统和浏览器中的0Day漏洞。Palo Alto Networks的Wendi Whitmore警告称,类似攻击能力将在数周或数月内扩散。CrowdStrike《2026全球威胁报告》显示,…...

【路由原理与路由协议-RIP路由信息协议】

路由原理与路由协议-RIP路由信息协议一、概念二、防环机制一、概念 1.RIP是内部网关协议,属于距离矢量路由协议,核心思想就是:跳数越少,路径越好。 2.RIP用于自治系统内部,基于UDP,520端口传输&#xff0c…...

【语音识别】基于MFCC特征提取和机器学习分类技术语音信号情绪检测系统附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…...

SVN:Checkout Depth

在 SVN 中,--depthfiles 参数通常对应于图形界面中的“Only this item”选项。它允许你检出指定目录本身,但不包含其下的任何文件或子目录。这与 --depthempty 不同,后者创建一个空的目录结构,但不包含目录本身。1、要实现类似“仅…...

CFCA精品可可设计师中级认证课程掌控:驾驭奶糖变量,构筑绝对可控的配方结构边界

在行业验证中,我反复观察到一个堪称“通病”的现象:许多人做黑巧还能勉强及格,可一旦涉足牛奶巧克力或特调风味,往往全线崩溃 。面对翻车,大多数人会轻易归咎于“奶太难伺候”或“糖不好控制” 。但我必须指出更深层的…...

Python自动化抢票脚本:3步搞定大麦网热门演出票务

Python自动化抢票脚本:3步搞定大麦网热门演出票务 【免费下载链接】Automatic_ticket_purchase 大麦网抢票脚本 项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase 还在为抢不到心仪演唱会门票而烦恼吗?当热门演出开票…...

计算机毕业设计:Python渔业资源数据可视化分析大屏 Flask框架 数据分析 可视化 数据大屏 大数据 机器学习 深度学习(建议收藏)✅

博主介绍:✌全网粉丝50W,前互联网大厂软件研发、集结硕博英豪成立软件开发工作室,专注于计算机相关专业项目实战6年之久,累计开发项目作品上万套。凭借丰富的经验与专业实力,已帮助成千上万的学生顺利毕业,…...

生成式AI多语言支持实战手册(覆盖127种语系+低资源语言破局方案)

第一章:生成式AI多语言支持的战略价值与全景图 2026奇点智能技术大会(https://ml-summit.org) 全球化数字生态正加速演进,生成式AI的多语言能力已从技术可选项跃升为战略基础设施。企业若仅依赖英语单语模型部署,将错失超65%的新兴市场用户触…...

macOS HTTPS嗅探终极指南:三步解决res-downloader证书配置难题

macOS HTTPS嗅探终极指南:三步解决res-downloader证书配置难题 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader 还…...

窗口置顶神器AlwaysOnTop:5分钟告别多任务切换焦虑

窗口置顶神器AlwaysOnTop:5分钟告别多任务切换焦虑 【免费下载链接】AlwaysOnTop Make a Windows application always run on top 项目地址: https://gitcode.com/gh_mirrors/al/AlwaysOnTop 你是否曾在文档写作时频繁切换参考窗口?是否在视频会议…...

别再死记硬背链式法则了!用一张图搞定多元复合函数求导(含常见错误分析)

多元复合函数求导的视觉化破题法:从依赖图到精准计算 数学分析中多元复合函数的求导问题,常常让学习者陷入符号的迷宫。传统教材中密密麻麻的偏导符号和嵌套函数结构,容易造成理解障碍和计算失误。本文将介绍一种基于变量依赖关系图的视觉化方…...

Ubuntu 20 环境下彻底卸载与升级 Dotnet 的完整指南

1. 为什么要彻底卸载旧版Dotnet? 在Ubuntu 20.04上开发.NET应用时,我经常遇到这样的困扰:系统里残留多个版本的Dotnet SDK和运行时,导致项目构建时版本冲突。比如上周调试一个ASP.NET Core项目时,明明指定了.NET 6.0&a…...

# LAMP 架构 + Discuz! 论坛实战笔记

一、项目整体目标 搭建一套LAMP 架构的内部技术交流 对外行业社区论坛,实现: 员工技术分享、问题交流、知识沉淀对外打造品牌、吸引客户完成从环境搭建到论坛上线、运维闭环 二、核心架构:LAMP 平台 1. LAMP 平台概述 什么是LAMP: L&am…...