摩尔庄园物品图标识别系统 —— 输入一张游戏截图,自动识别其中所有物品图标并输出对应的物品ID与名称。
本程序是 摩尔博物馆 中 图片搜索功能 的开源实例。线上部署的图片搜索功能与本项目使用的是同一套模型。
示例输入图片见 examples/ 文件夹。
pip install -r requirements.txt系统要求:
- Python 3.8+
- CPU 推理: 支持(默认)
- GPU 推理: 可选(需安装 CUDA 版 PyTorch)
python predict.py <图片路径>示例:
python predict.py examples/example_01.png程序会输出:
- 终端: 每个图标的名称、ID、置信度、位置
- 图片:
output_annotated.png(带标注框和序号的结果图) - JSON:
<输入文件名>_results.json(结构化检测结果)
可在 predict.py 中调整参数:
YOLO_CONFIDENCE = 0.25 # YOLO 检测阈值 (0~1),越低越灵敏
BBOX_PADDING = 0.10 # 检测框外扩比例python gui_gradio.py适合交互式测试,支持拖拽上传、实时预览、结果导出。
python gui_tkinter.py原生桌面界面,无需浏览器,轻量级。
系统会自动判断图片中哪些区域是物品图标,将它们逐个裁切出来,再分别识别每个图标对应的物品。因此本系统分为两个阶段:
输入图片 (游戏截图)
│
▼
┌─────────────────────────────────┐
│ 阶段一: YOLOv8 目标检测 │
│ 在图片中搜索并定位所有图标区域 │
│ 模型: 1_yolo_detector_v1.0.pt │
└─────────────┬───────────────────┘
│ 输出: 各图标的坐标框
▼
┌─────────────────────────────────┐
│ 裁切 + 预处理 │
│ 按坐标裁切图标区域, 缩放至224×224 │
│ ImageNet标准化 │
└─────────────┬───────────────────┘
│
▼
┌──────────────────────────────────────┐
│ 阶段二: MobileNetV2 图标分类 │
│ 对每个图标识别具体物品ID │
│ 模型: 2_icon_classifier_v1.0.pt │
└─────────────┬────────────────────────┘
│ 输出: 物品ID + 置信度
▼
┌─────────────────────────────────┐
│ 名称查找 │
│ 通过 item_names.json 查找物品名称 │
│ (15,133 个物品的中文名称数据库) │
└─────────────┬───────────────────┘
│
▼
输出结果 (标注图片 + JSON)
| 文件 | 说明 | 大小 |
|---|---|---|
models/1_yolo_detector_v1.0.pt |
YOLOv8 检测器 — 在图片中定位图标区域 | 6 MB |
models/2_icon_classifier_v1.0.pt |
MobileNetV2 分类器 — 识别图标对应的物品ID | 62 MB |
| 文件 | 说明 |
|---|---|
data/icon_classes.json |
分类器输出索引 → 物品ID 的映射表 |
data/item_names.json |
15,133 个物品ID → 中文名称的数据库 |
mole-icon-classifier/
├── models/ # 模型文件
│ ├── 1_yolo_detector_v1.0.pt # YOLOv8 图标检测器
│ └── 2_icon_classifier_v1.0.pt # MobileNetV2 图标分类器
├── data/ # 数据文件
│ ├── icon_classes.json # 类别索引映射表
│ └── item_names.json # 物品名称数据库
├── examples/ # 示例输入图片
├── screenshots/ # 效果展示截图
├── predict.py # 命令行推理脚本
├── gui_gradio.py # 网页 GUI (Gradio)
├── gui_tkinter.py # 桌面 GUI (Tkinter)
├── requirements.txt # Python 依赖
├── LICENSE # MIT 许可证
└── README.md
- 截图识别率高,拍照识别率低: 本模型基于游戏原始截图训练,对屏幕截图有较高的识别率;对手机拍摄屏幕的照片(存在摩尔纹、色差、倾斜等干扰)识别效果较弱。建议尽量使用屏幕截图而非拍照。
本项目的开发极大程度上归功于 Claude Opus 4.6 模型的建议与执行。
本项目使用 MIT License 开源协议。
你可以自由地使用、修改、分发本项目的代码,包括用于商业目的,但需要保留原始的版权声明和许可证。
Copyright (c) 2014-2026 52摩尔 (52mole.net)
- 作者: April
- 项目: 52摩尔 (52mole.net)
- 联系: contact@52mole.net
- 网站: https://52mole.net