# 豆瓣滑块验证码检测器 基于 sharp 图像处理库实现的滑块验证码缺口精确识别工具。 ## 功能特性 - ✅ 自动检测图片中的滑块缺口位置 - ✅ 支持多滑块检测(一张图片中检测多个滑块) - ✅ 使用多阈值策略提高检测准确率 - ✅ 自动在图片上绘制蓝色边框标注检测结果 - ✅ 支持人工标注对比验证 ## 安装依赖 ```bash npm install ``` ## 使用方法 ### 运行检测 ```bash npm run detect ``` 该命令会: 1. 验证算法准确性(使用 `images/douban-target` 中的红框标注图片) 2. 处理 `images/douban` 目录中的所有图片 3. 将检测结果(带蓝色边框)输出到 `images/output` 目录 ### 目录结构 ``` images/ ├── douban/ # 豆瓣滑块真实截图(待检测) ├── douban-target/ # 红框标注图片(用于验证算法准确性) ├── slider/ # 滑块形状模板图片 ├── target/ # 滑块标注图片 └── output/ # 检测结果输出目录(蓝色框标注) ``` ## 检测算法 ### 核心思路 1. **暗色区域检测**:滑块缺口通常为暗色(阴影)区域 2. **多阈值策略**:使用 75、90、105 三个亮度阈值进行检测,提高鲁棒性 3. **形态学处理**:使用闭运算(先膨胀后腐蚀)去除噪点 4. **连通区域分析**:使用洪水填充算法查找所有暗色连通区域 5. **特征筛选**: - 尺寸范围:50-95 像素(宽度和高度) - 宽高比:0.8-1.25(接近正方形) - 位置:图片中部区域(15%-75%高度) - 密度:像素填充率 > 55% ### 检测结果 当前性能(在 9 张测试图片上): - **验证准确率**:55.6%(5/9) - **检测完成率**:66.7%(6/9) - 支持多滑块检测(滑块-1.png 检测到 2 个滑块) ## 开发 ### 编译 ```bash npm run build ``` ### 调试 查看未检测到的图片特征: ```bash npx ts-node --transpile-only src/debug-threshold.ts ``` 分析红框标注信息: ```bash npx ts-node --transpile-only src/analyze.ts ``` ## 技术栈 - TypeScript - Sharp (图像处理) - Node.js ## 优化方向 1. 提高对低对比度图片的检测能力 2. 优化形态学操作参数 3. 增加边缘检测辅助判断 4. 支持更多滑块形状变体