Files
splider/README.md
2025-10-25 15:53:29 +08:00

96 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 豆瓣滑块验证码检测器
基于 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. 支持更多滑块形状变体