2025-10-25 19:30:38 +08:00
2025-10-25 19:23:02 +08:00
2025-10-25 19:23:02 +08:00
2025-10-25 15:53:29 +08:00
2025-10-25 19:23:02 +08:00
2025-10-25 19:23:02 +08:00
2025-10-25 19:30:38 +08:00
2025-10-25 19:23:02 +08:00
2025-10-25 15:53:29 +08:00

豆瓣滑块验证码检测器v1.0.0

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

功能特性

  • 自动检测图片中的滑块缺口位置
  • 支持多滑块检测(一张图片中检测多个滑块)
  • 多策略候选区域搜索与自适应评分体系
  • 自动在图片上绘制蓝色边框标注检测结果
  • 支持基于 ground-truth 的准确率评估

安装依赖

npm install

使用方法

运行检测(默认数据集)

npm run detect

该命令会:

  1. 验证算法准确性(使用 images/douban-target 中的红框标注图片)
  2. 处理 images/douban 目录中的所有图片
  3. 将检测结果(带蓝色边框)输出到 images/output 目录

自定义目录

npm run detect -- --pic-dir=images/custom

--pic-dirREADME 所在目录的相对路径,检测结果仍然输出到 images/output

目录结构

images/
  ├── douban/          # 豆瓣滑块真实截图(待检测)
  ├── douban-target/   # 红框标注图片(用于验证算法准确性)
  ├── slider/          # 滑块形状模板图片
  ├── target/          # 滑块标注图片
  └── output/          # 检测结果输出目录(蓝色框标注)

检测算法

核心思路

  1. 多阈值暗/亮检测:从增强对比度后的图像中提取亮/暗连通域
  2. Sobel 边缘候选:基于边缘图的形态学操作补充候选框
  3. 颜色量化与 LAB 色差扫描:强化低对比度场景下的候选覆盖
  4. 候选融合:利用 IoU 去重并按颜色一致性、内部边缘密度、梯度平滑度打分
  5. 自学习滑块扩展:在首个高置信度框的基础上,使用模板匹配寻找第二个滑块

开发

编译

npm run build

调试

核心逻辑已经拆分为模块化的检测管线:

  • src/detection/candidate-search.ts:多策略候选区域查找与评分
  • src/utils/image.ts:图像形态学、边缘工具函数
  • src/detector.ts:检测器主体、框体精炼与多滑块协同策略
  • src/cli.ts:命令行入口,负责加载 ground-truth 与批量处理
  • src/validator.tsIoU/容差匹配与统计分析

技术栈

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

版本历史

  • v1.0.0引入模块化检测管线、CLI 工具、ground-truth 验证与多策略候选融合。

优化方向

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