Skip to content

martjay/color-finder

Repository files navigation

颜色块识别器

一个基于 PyQt6 的桌面应用程序,用于自动识别图片中颜色不同的方块位置。支持上传图片、粘贴、截图等多种方式,并提供可调节的敏感度设置。

颜色块识别器 PyQt6 License

✨ 功能特性

  • 📁 多种输入方式

    • 选择本地图片文件
    • Ctrl+V 粘贴剪贴板图片
    • 全屏截图框选(支持DPI缩放校准)
    • 拖拽图片到窗口
  • 🎯 智能识别

    • 自动检测网格大小(支持矩形网格)
    • 精确识别不同颜色的方块位置
    • 可调节敏感度(0.5-3.0)
    • 支持极细微色差识别
  • 🎨 用户体验

    • 自动识别,无需手动点击
    • 自适应窗口大小
    • 支持暗色主题
    • 窗口置顶开关
    • 调试模式显示所有方块颜色值
  • ⚙️ 高级功能

    • DPI缩放校准(解决高分屏截图偏移)
    • 自动保存窗口大小和设置
    • 多策略颜色识别算法

📦 安装

方式一:一键安装(推荐)

  1. 确保已安装 Python 3.8 或更高版本
  2. 双击运行 install.bat
  3. 等待依赖安装完成

方式二:手动安装

# 创建虚拟环境
python -m venv venv

# 激活虚拟环境
venv\Scripts\activate  # Windows
source venv/bin/activate  # Linux/Mac

# 安装依赖
pip install -r requirements.txt

🚀 使用

启动程序

方式一: 双击 start.bat

方式二: 命令行启动

venv\Scripts\activate
python app.py

基本操作

  1. 加载图片

    • 点击"📁 选择图片"按钮
    • 或按 Ctrl+V 粘贴剪贴板图片
    • 或点击"✂️ 截图选区"进行截图
    • 或直接拖拽图片到窗口
  2. 自动识别

    • 图片加载后会自动开始识别
    • 识别结果显示在底部
  3. 调节敏感度

    • 拖动顶部"敏感度"滑块
    • 向左:只识别明显差异
    • 向右:识别细微差异
    • 推荐值:1.5-2.0
  4. 调试模式

    • 勾选"调试"复选框
    • 查看所有方块的实际RGB值
    • 帮助判断识别准确性

DPI校准(高分屏用户)

如果截图位置不准确:

  1. 点击"⚙️ DPI校准"按钮
  2. 点击"🔍 自动检测系统DPI"
  3. 或手动调整水平/垂直缩放比例
  4. 点击"OK"保存设置

🔨 打包为EXE

双击运行 build.bat,打包完成后EXE文件位于 dist/颜色块识别器.exe

📋 依赖项

  • PyQt6 >= 6.5.0
  • Pillow >= 10.0.0
  • numpy >= 1.24.0

🎮 测试工具

项目包含两个测试用的找颜色游戏:

1. color_game.html

简化版游戏,专为测试设计:

  • 无时间限制
  • 可调节网格大小(3x3 到 10x10)
  • 四种难度(简单、中等、困难、极难)

2. color-game/index.html

完整版游戏,下载自网络:

  • 已添加"不限时模式"开关
  • 用于真实场景测试

🔧 技术细节

网格检测算法

  1. 边缘检测法:检测前景背景分离,找到色块间隙
  2. 备用方案:均匀分割尝试所有可能的行列组合

颜色识别算法(多策略组合)

  1. 平均距离法:计算每个颜色到其他颜色的平均距离
  2. Z-score异常检测:使用标准差找出统计异常值
  3. MAD中位数绝对偏差:更稳健的异常检测
  4. K-means聚类:将颜色分成两组,返回少数组
  5. 最远距离法:找距离中位数最远的方块

📝 快捷键

  • Ctrl+V - 粘贴图片
  • Ctrl+O - 打开文件
  • ESC - 取消截图选区

⚠️ 注意事项

  1. DPI缩放:高分屏用户首次使用建议进行DPI校准
  2. 敏感度调节
    • 色差明显:使用较低敏感度(0.5-1.0)
    • 色差细微:使用较高敏感度(2.0-3.0)
  3. 截图建议:截图时尽量包含完整的色块网格,避免截取部分

🐛 常见问题

Q: 截图位置不准确?
A: 点击"DPI校准",使用自动检测或手动调整缩放比例。

Q: 识别不出细微色差?
A: 将敏感度滑块拉到最右(3.0),勾选"调试"查看实际颜色值。

Q: 网格识别错误?
A: 确保截图包含完整网格,背景与色块有明显区分。

Q: 打包后图标不显示?
A: 确保 icon.ico 文件在根目录,重新运行 build.bat

📄 文件结构

color_finder/
├── app.py                  # 主程序
├── icon.ico               # 程序图标
├── requirements.txt       # 依赖列表
├── install.bat           # 一键安装脚本
├── start.bat             # 启动脚本
├── build.bat             # 打包脚本
├── color_game.html       # 测试游戏(简化版)
├── color-game/           # 测试游戏(完整版)
│   ├── index.html
│   ├── colorJudgement.js
│   └── style.css
└── README.md             # 本文件

🤝 贡献

欢迎提交 Issue 和 Pull Request!

📜 许可证

MIT License

🙏 致谢

  • PyQt6 - 强大的Python GUI框架
  • Pillow - Python图像处理库
  • NumPy - 科学计算库

开发环境: Windows 10/11, Python 3.8+
最后更新: 2025年12月

About

自动识别图片中颜色不同的方块位置

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors