# 豆瓣滑块验证码检测器(v1.0.0) 基于 sharp 图像处理库实现的滑块验证码缺口精确识别工具。 ## 功能特性 - ✅ 自动检测图片中的滑块缺口位置 - ✅ 支持多滑块检测(一张图片中检测多个滑块) - ✅ 多策略候选区域搜索与自适应评分体系 - ✅ 自动在图片上绘制蓝色边框标注检测结果 - ✅ 支持基于 ground-truth 的准确率评估 ## 安装依赖 ```bash npm install ``` ## 使用方法 ### 运行检测(默认数据集) ```bash npm run detect ``` 该命令会: 1. 验证算法准确性(使用 `images/douban-target` 中的红框标注图片) 2. 处理 `images/douban` 目录中的所有图片 3. 将检测结果(带蓝色边框)输出到 `images/output` 目录 ### 自定义目录 ```bash npm run detect -- --pic-dir=images/custom ``` > `--pic-dir` 为 `README` 所在目录的相对路径,检测结果仍然输出到 `images/output`。 ### 目录结构 ``` images/ ├── douban/ # 豆瓣滑块真实截图(待检测) ├── douban-target/ # 红框标注图片(用于验证算法准确性) ├── slider/ # 滑块形状模板图片 ├── target/ # 滑块标注图片 └── output/ # 检测结果输出目录(蓝色框标注) ``` ## 检测算法 ### 核心思路 1. **多阈值暗/亮检测**:从增强对比度后的图像中提取亮/暗连通域 2. **Sobel 边缘候选**:基于边缘图的形态学操作补充候选框 3. **颜色量化与 LAB 色差扫描**:强化低对比度场景下的候选覆盖 4. **候选融合**:利用 IoU 去重并按颜色一致性、内部边缘密度、梯度平滑度打分 5. **自学习滑块扩展**:在首个高置信度框的基础上,使用模板匹配寻找第二个滑块 ## 开发 ### 编译 ```bash npm run build ``` ### 调试 核心逻辑已经拆分为模块化的检测管线: - `src/detection/candidate-search.ts`:多策略候选区域查找与评分 - `src/utils/image.ts`:图像形态学、边缘工具函数 - `src/detector.ts`:检测器主体、框体精炼与多滑块协同策略 - `src/cli.ts`:命令行入口,负责加载 ground-truth 与批量处理 - `src/validator.ts`:IoU/容差匹配与统计分析 ## 技术栈 - TypeScript - Sharp (图像处理) - Node.js ## 版本历史 - v1.0.0:引入模块化检测管线、CLI 工具、ground-truth 验证与多策略候选融合。 ## 优化方向 1. 提高对低对比度图片的检测能力 2. 优化形态学操作参数 3. 增加边缘检测辅助判断 4. 支持更多滑块形状变体