Skip to content

About

摩尔庄园物品图标识别系统

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

Mole Icon Classifier

摩尔庄园物品图标识别系统 —— 输入一张游戏截图,自动识别其中所有物品图标并输出对应的物品ID与名称。

本程序是 摩尔博物馆 中 图片搜索功能 的开源实例。线上部署的图片搜索功能与本项目使用的是同一套模型。

效果展示

效果展示1

效果展示2

效果展示3

效果展示4

效果展示5

示例输入图片见 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       # 检测框外扩比例

方式二:网页界面(Gradio)

python gui_gradio.py

适合交互式测试,支持拖拽上传、实时预览、结果导出。

方式三:桌面程序(Tkinter)

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)

作者信息

About

摩尔庄园物品图标识别系统

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages