2025-10-25 15:53:29 +08:00
2025-10-25 15:53:29 +08:00
2025-10-25 15:53:29 +08:00
2025-10-25 15:53:29 +08:00
2025-10-25 15:53:29 +08:00
2025-10-25 15:53:29 +08:00
2025-10-25 15:53:29 +08:00
2025-10-25 15:53:29 +08:00
2025-10-25 15:53:29 +08:00

豆瓣滑块验证码检测器

基于 sharp 图像处理库实现的滑块验证码缺口精确识别工具。

功能特性

  • 自动检测图片中的滑块缺口位置
  • 支持多滑块检测(一张图片中检测多个滑块)
  • 使用多阈值策略提高检测准确率
  • 自动在图片上绘制蓝色边框标注检测结果
  • 支持人工标注对比验证

安装依赖

npm install

使用方法

运行检测

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 个滑块)

开发

编译

npm run build

调试

查看未检测到的图片特征:

npx ts-node --transpile-only src/debug-threshold.ts

分析红框标注信息:

npx ts-node --transpile-only src/analyze.ts

技术栈

  • TypeScript
  • Sharp (图像处理)
  • Node.js

优化方向

  1. 提高对低对比度图片的检测能力
  2. 优化形态学操作参数
  3. 增加边缘检测辅助判断
  4. 支持更多滑块形状变体
Description
滑块识别
Readme 78 MiB
2025-10-25 19:30:45 +08:00
Languages
TypeScript 100%