(有报告 跑通)基于YOLOV8的花卉检测识别系统 基于深度学习的花卉检测识别系统 有数据集 ...
(有报告 跑通)基于YOLOV8的花卉检测识别系统 基于深度学习的花卉检测识别系统 有数据集 模型已经训练好 直接用即可 包搭配环境 远程运行跑通程序 本项目已经训练好模型,配置好环境可直接使用,运行效果见图像(可找我要演示视频) 项目介绍: 软件:Pycharm+Anaconda 环境:python=3.9 opencv-python PyQt5 torch1.9 文件: 1.完整程序文件(.py等 2.UI界面源文件、图标(.ui、.qrc、.py等) 3.测试图片、视频文件(.jpeg、.mp4、.avi等) 数据集共15类 \"雏菊\", '蒲公英', '玫瑰', '向日葵', '素馨花', '栀子花', '金盏花', '芙蓉花', '金银花', '印度锦葵', '麻风树属', '马拉巴尔木槿', '万寿菊', '香花', '蜘蛛百合' 功能: 系统可用于花卉检测识别; 支持图片、视频及摄像头进行检测: 界面可实时显示目标位置、目标总数、置信度等信息: 支持检测结果保存; ①选择图片进行对于花卉检测识别 ②选择视频进行对于花卉检测识别 ③摄像头进行检测对于花卉检测识别

想不想用摄像头对准花园就能自动识别出玫瑰还是向日葵?今天咱们来玩个有意思的——基于YOLOv8训练好的15种花卉检测系统。不用自己标注数据,不用漫长训练,环境都给你配好了,拿来就能直接开箱检测!

这个项目的最大优势是"即插即用"。下载完压缩包后,用conda创建个虚拟环境:
conda create -n flower_det python=3.9
conda activate flower_det
pip install torch==1.9.0+cu111 torchvision==0.10.0+cu111 -f https://download.pytorch.org/whl/torch_stable.html
pip install -r requirements.txt
核心检测代码藏在detect_flowers.py里,来看这段视频检测的精华部分:
def video_detect(self, video_path):
cap = cv2.VideoCapture(video_path)
while True:
ret, frame = cap.read()
if not ret: break
results = self.model.predict(frame, conf=0.6)
annotated_frame = results[0].plot()
# 实时统计花仙子数量
self.label_count.setText(f"Detected: {len(results[0])}")
# 把带框的画面怼到UI上
self.display_image(annotated_frame)
cap.release()
这里用了YOLOv8原生的predict接口,conf参数控制着检测阈值。有意思的是results[0].plot()自带了画框功能,比自己写OpenCV画框省事多了。注意那个0.6的置信度阈值,调低点能抓更多花但可能有误检,根据实际场景微调。

(有报告 跑通)基于YOLOV8的花卉检测识别系统 基于深度学习的花卉检测识别系统 有数据集 模型已经训练好 直接用即可 包搭配环境 远程运行跑通程序 本项目已经训练好模型,配置好环境可直接使用,运行效果见图像(可找我要演示视频) 项目介绍: 软件:Pycharm+Anaconda 环境:python=3.9 opencv-python PyQt5 torch1.9 文件: 1.完整程序文件(.py等 2.UI界面源文件、图标(.ui、.qrc、.py等) 3.测试图片、视频文件(.jpeg、.mp4、.avi等) 数据集共15类 \"雏菊\", '蒲公英', '玫瑰', '向日葵', '素馨花', '栀子花', '金盏花', '芙蓉花', '金银花', '印度锦葵', '麻风树属', '马拉巴尔木槿', '万寿菊', '香花', '蜘蛛百合' 功能: 系统可用于花卉检测识别; 支持图片、视频及摄像头进行检测: 界面可实时显示目标位置、目标总数、置信度等信息: 支持检测结果保存; ①选择图片进行对于花卉检测识别 ②选择视频进行对于花卉检测识别 ③摄像头进行检测对于花卉检测识别

UI界面是PyQt5做的,看看摄像头检测按钮的响应:
def webcam_detect(self):
self.cap = cv2.VideoCapture(0)
while self.thread_flag:
ret, frame = self.cap.read()
if ret:
results = self.model.predict(frame)
# 把BGR转RGB给QImage吃
rgb_image = cv2.cvtColor(results[0].plot(), cv2.COLOR_BGR2RGB)
h, w, ch = rgb_image.shape
bytes_per_line = ch * w
convert_to_Qt_format = QImage(rgb_image.data, w, h, bytes_per_line, QImage.Format_RGB888)
self.label_display.setPixmap(QPixmap.fromImage(convert_to_Qt_format))
这里有个坑要注意:OpenCV读的是BGR格式,而PyQt的QImage需要RGB格式,不转颜色的话画面会发蓝。那个while循环里的thread_flag是个安全开关,关闭窗口时会自动终止摄像头采集。
实际测试中发现金盏花和万寿菊容易混淆,毕竟都是橘黄色系的花。这时候可以拉高conf到0.7以上,或者加个NMS(非极大抑制):
results = model.predict(source, conf=0.6, iou=0.5) # 调大iou值减少重叠框
想保存检测结果?程序里藏了个彩蛋:
# 在检测函数里加个时间戳保存
if self.save_flag:
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
cv2.imwrite(f"results/{timestamp}.jpg", annotated_frame)
记得先在程序根目录建个results文件夹,不然会报错找不到路径。这个保存功能特别适合做花卉普查时批量记录。
最后说个冷知识:数据集里的"蜘蛛百合"其实是石蒜科的,和真正的百合没关系。所以当你在公园检测到这花时,可以掏出这个冷知识惊艳同行的小伙伴~ 整套代码已经打包好,想要体验的朋友私信我拿演示视频,保证你分分钟变身行走的"植物百科全书"!
更多推荐
所有评论(0)