first commit

This commit is contained in:
douboer
2025-10-25 15:53:29 +08:00
commit 7a4f659dda
321 changed files with 4588 additions and 0 deletions

95
README.md Normal file
View File

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