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

基于 YOLOv8 实现快递盒实例分割(含代码)

这是一段基于 YOLOv8 实现快递盒实例分割的 Python 代码,核心功能:加载训练好的 YOLOv8 分割模型 → 对单张 / 批量图片预测快递盒 → 保存带分割标注的结果图。我会分模块 + 函数 + 核心逻辑一步步讲,完全零基础也能看懂。
效果对比图(关注私我领取源码和model.pt)


一、导入依赖库

python

运行

from ultralytics import YOLO # 导入YOLOv8官方库,核心模型功能 import cv2 # OpenCV,用于图片读写、绘制 import os # 系统文件操作(判断文件/文件夹、路径拼接) from pathlib import Path # 更简洁的文件夹创建工具
  • ultralytics.YOLO:官方封装好的 YOLOv8,支持检测 / 分割 / 分类,一行代码加载模型、预测
  • cv2:负责把预测后的图片保存到本地
  • os/Path:处理文件路径、自动创建文件夹

二、函数 1:加载 YOLOv8 分割模型

python

运行

def load_yolov8_segment_model(model_path): """ 加载YOLOv8分割模型 Args: model_path: 模型权重文件路径(best.pt绝对路径) Returns: 加载成功的模型对象 """ try: # 加载模型 model = YOLO(model_path) print(f"✅ 模型加载成功:{model_path}") return model except Exception as e: print(f"❌ 模型加载失败:{str(e)}") raise

功能

专门用来加载你训练好的模型权重文件(best.pt)

关键细节

  1. def 函数名(参数):定义一个可复用的函数
  2. try-except异常捕获,防止模型路径错误、文件损坏导致程序直接崩溃
  3. model = YOLO(model_path):YOLOv8 官方 API,一行加载模型
  4. 成功返回模型对象,失败打印错误并抛出异常

三、函数 2:核心预测函数(最重要)

python

运行

def predict_express_box(model, img_path, conf=0.5, iou=0.45): """ 调用模型预测快递盒分割 Args: model: 加载好的YOLOv8模型对象 img_path: 测试图片路径(单张/文件夹) conf: 置信度阈值 iou: NMS交并比阈值 """ # 固定保存到你指定的路径 save_dir = r"D:\kuaidi\undergraduate_thesis-master\undergraduate_thesis-master\data\results" # 创建保存目录(不存在则自动创建) Path(save_dir).mkdir(parents=True, exist_ok=True)

功能

接收模型和图片路径,执行预测,并把结果保存到指定文件夹

关键参数

  • conf=0.5置信度阈值,只有模型认为概率≥50% 的目标才会显示
  • iou=0.45非极大值抑制阈值,过滤重复框,避免一个目标标多次
  • save_dir结果固定保存路径,所有预测图都会存在这里

核心逻辑:判断是单张图 还是 文件夹(批量图)

python

运行

# 执行预测 try: if os.path.isdir(img_path): # 批量预测文件夹内所有图片 img_list = [os.path.join(img_path, f) for f in os.listdir(img_path) if f.lower().endswith(('.jpg', '.jpeg', '.png', '.bmp'))] if not img_list: print("⚠️ 未在文件夹中找到有效图片") return results = model(img_list, conf=conf, iou=iou, save=False) else: # 单张图片预测 if not os.path.exists(img_path): print(f"❌ 图片不存在:{img_path}") return results = model(img_path, conf=conf, iou=iou, save=False)
  1. 判断输入类型
    • os.path.isdir(img_path):如果输入是文件夹→ 批量读取所有图片
    • 否则 → 处理单张图片
  2. 过滤有效图片:只识别 jpg/png/bmp 等格式
  3. 模型预测model(图片路径)是 YOLOv8 官方预测语句,save=False不使用官方保存,自定义保存

处理预测结果 + 保存图片

python

运行

# 处理预测结果 for idx, result in enumerate(results): img = result.orig_img # 原始图片 plotted_img = result.plot() # 绘制分割框/掩码的图片 img_name = os.path.basename(result.path) # 获取图片文件名 save_path = os.path.join(save_dir, f"pred_{img_name}") cv2.imwrite(save_path, plotted_img) # 保存结果图 print(f"\n📷 图片 {img_name} 预测完成:") print(f" - 保存路径:{save_path}") # 打印检测到的快递盒数量(分割用result.masks,检测用result.boxes) print(f" - 检测到快递盒数量:{len(result.masks)}" if result.masks else " - 未检测到快递盒") print(f"\n✅ 所有预测结果已保存至:{os.path.abspath(save_dir)}") return results

核心知识点(分割任务专用)

  • result.plot():自动在图片上绘制分割掩码 + 边框 + 类别 + 置信度
  • result.masks分割任务的核心结果,存储所有目标的分割轮廓(检测任务用result.boxes
  • cv2.imwrite():将绘制好的图片保存到本地
  • 控制台打印:告诉你每张图检测了几个快递盒、结果存在哪里

四、程序入口:主函数(运行代码的地方)

python

运行

# ------------------- 运行入口 ------------------- if __name__ == "__main__": # 模型路径(你的路径) MODEL_PATH = r"D:\kuaidi\undergraduate_thesis-master\undergraduate_thesis-master\data\run\segment_final\weights\best.pt" # 测试图片路径(改成你自己的测试图) TEST_IMG_PATH = r"D:\kuaidi\undergraduate_thesis-master\undergraduate_thesis-master\Volume_Measure_yolov8_single_camera\Volume_Measure\hexahedron\iPhone\21F433EBE6747B976730FF1077B20A06.png" # 加载模型 + 预测 yolov8_model = load_yolov8_segment_model(MODEL_PATH) predict_express_box( model=yolov8_model, img_path=TEST_IMG_PATH, conf=0.5, iou=0.45 )

作用

这是运行代码的起点,只有直接运行这个 py 文件时,才会执行这里的代码

运行流程

  1. 定义模型路径(你的训练好的 best.pt)
  2. 定义测试图片路径(单张图 / 文件夹都可以)
  3. 调用函数:先加载模型 → 再执行预测
  4. 预测完成后,结果自动保存在指定文件夹
http://www.jsqmd.com/news/619251/

相关文章:

  • 数据可视化平台建设与实践:构建直观的数据分析系统
  • **Grok 4.2写小说软件:2025年创作指南与推荐**在数字化浪潮席卷全球的今天,写作工具也迎来了前所未有的发展机遇。Grok 4.2写小说软件作为其中的佼佼者,凭借其强大的功能和卓越的用户
  • 靠谱的 IT 培训机构有哪些?行业头部品牌深度盘点 - 资讯焦点
  • Agent Client Protocol 全景解析叹
  • Zotero-SciPDF终极教程:5步实现学术文献PDF自动下载的完整方案
  • 终极指南:3分钟精通Excel到Markdown表格转换神器
  • 为什么精益生产要进行排班管理?科学排兵布阵,解锁生产效率潜能
  • Keil5 MDK-ARM V6编译器下,勾选MicroLIB后报错__initial_sp的两种快速修复法
  • 终极免费浏览器3D模型查看器:5分钟让你成为3D模型查看专家
  • 品牌口碑 | 微小流量流量计哪个品牌好?ACCU精量的用户评价与应用案例 - 品牌推荐大师1
  • 告别‘玄学’听诊:我是如何用Python和CNN-LSTM模型给心音‘打分’的(准确率92%)
  • Cursor Pro无限畅用:开源工具如何智能绕过AI编辑器限制
  • Overleaf用户必看:IEEE会议论文提交Latex源文件的3个避坑指南(含EPS转换技巧)
  • LM Studio 终端实时输出日志在哪里查看 LM Studio查看实时日志
  • NaViL-9B多模态实战:零售货架图片识别+缺货预警文案生成案例
  • 收藏!具身智能爆火背后,AI大模型应用开发入门指南(小白/程序员必看)
  • 2026 母婴洗护榜单 福来温和配方实力稳居前列 - 资讯焦点
  • HTML5头部
  • Next.js从入门到实战保姆级教程:数据获取与缓存策略
  • 告别Colcon编译失败:深入理解ROS2 ament_cmake与CMake的‘握手’协议
  • ESLyric-LyricsSource深度解析:三大音乐平台逐字歌词格式高级配置指南
  • 2026年4月最新卡地亚官方售后网点核验报告(含迁址/新开)实地考察・多方验证 - 亨得利官方服务中心
  • 哥本哈士奇(aspnetx)坎
  • 不用装软件!这款MicroPython浏览器 IDE :让你在手机上也能调试树莓派 Pico遗
  • 第5次作业 实践五 网络安全防范技术
  • 搭建Spring Boot + ELK日志平台,实现可视化日志监控
  • admin——[HCTF 2018].19848094
  • stock-sdk-mcp 的实践整理睾
  • Python 3.8环境下dlib库安装保姆级教程(附网盘资源)
  • Elsevier Tracker:终极免费Chrome插件,3分钟掌握期刊审稿全流程