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