# 📹 本地测试指南

## 🎯 测试视频文件放置位置

### 推荐目录结构：
```
checkHand/
├── data/
│   └── videos/          # 测试视频目录
│       ├── test_basic.mp4      # 基础移动测试视频
│       ├── test_gesture.mp4    # 手势测试视频
│       ├── your_video.mp4      # 你的自定义视频
│       └── real_hand.mp4       # 真实手部动作视频
```

## 🚀 快速开始本地测试

### 1. 使用自动生成的测试视频

```bash
# 生成测试视频
python create_test_video.py

# 使用基础移动测试视频
./start_service.sh --test-video data/videos/test_basic.mp4

# 使用手势测试视频
./start_service.sh --test-video data/videos/test_gesture.mp4
```

### 2. 使用你自己的视频文件

#### 支持的视频格式：
- MP4 (推荐)
- AVI
- MOV
- MKV

#### 推荐视频参数：
- 分辨率：640x480 或 1280x720
- 帧率：30 FPS
- 编码：H.264
- 时长：10-60秒（测试用）

#### 放置你的视频：
```bash
# 1. 将视频文件复制到测试目录
cp /path/to/your/video.mp4 data/videos/

# 2. 启动服务器并使用你的视频
./start_service.sh --test-video data/videos/your_video.mp4
```

## 🎬 创建自定义测试视频

### 使用脚本生成：
```bash
# 生成基础移动测试视频（10秒）
python create_test_video.py --type basic --duration 10

# 生成手势测试视频（15秒）
python create_test_video.py --type gesture --duration 15

# 生成两种类型的视频
python create_test_video.py --type both --duration 12

# 自定义帧率和输出目录
python create_test_video.py --fps 60 --output-dir my_videos/
```

### 使用手机录制真实手部视频：

#### 录制建议：
1. **光线充足** - 避免阴影和反光
2. **背景简单** - 纯色背景最佳
3. **手部清晰** - 确保手部在画面中央
4. **动作缓慢** - 便于算法跟踪
5. **时长适中** - 10-30秒即可

#### 录制内容示例：
- 手掌张开和握拳
- 手指抓取动作
- 手部左右移动
- 手部上下移动
- 手部前后移动（改变大小）

#### 文件转换：
```bash
# 如果需要转换格式，可以使用 ffmpeg
ffmpeg -i input.mov -c:v libx264 -c:a aac data/videos/output.mp4
```

## 🔧 测试步骤

### 1. 准备测试环境

```bash
# 1. 确保虚拟环境已激活
source venv/bin/activate

# 2. 检查测试视频是否存在
ls -la data/videos/

# 3. 运行系统测试
python test_system.py
```

### 2. 启动测试服务

```bash
# 方式1：使用启动脚本
./start_service.sh --test-video data/videos/test_basic.mp4

# 方式2：手动启动
python run_web_service.py --test-video data/videos/test_basic.mp4
```

### 3. 访问测试界面

1. 打开浏览器访问：`http://localhost:5000`
2. 观察Web界面显示：
   - 实时视频预览
   - 手部检测结果
   - 3D坐标值
   - 控制信号

### 4. 测试机械臂客户端

```bash
# 新开一个终端窗口
./start_robot_client.sh

# 或者手动启动
cd src
python robot_client.py --mock
```

## 📊 测试检查项

### ✅ 视频显示检查：
- [ ] 视频正常播放
- [ ] 手部检测框显示正确
- [ ] 关键点连接线正常
- [ ] 坐标轴指示器显示

### ✅ 数据输出检查：
- [ ] X、Y、Z角度值变化
- [ ] 抓取状态检测
- [ ] 动作识别正确
- [ ] FPS显示正常

### ✅ 通信检查：
- [ ] WebSocket连接正常
- [ ] 机械臂客户端接收信号
- [ ] 控制信号格式正确
- [ ] 实时性满足要求

## 🛠️ 常见问题排查

### 问题1：视频无法播放
```bash
# 检查视频文件
file data/videos/your_video.mp4

# 检查视频信息
ffmpeg -i data/videos/your_video.mp4 2>&1 | head -20
```

### 问题2：检测效果不佳
- 检查视频光线条件
- 确认手部在画面中央
- 尝试不同的视频文件
- 调整MediaPipe参数

### 问题3：性能问题
```bash
# 降低视频分辨率
ffmpeg -i input.mp4 -vf scale=640:480 output.mp4

# 减少帧率
ffmpeg -i input.mp4 -r 15 output.mp4
```

## 📈 性能测试

### 测试延迟：
```bash
# 启动服务器
./start_service.sh --test-video data/videos/test_basic.mp4

# 在另一个终端查看延迟
curl -s http://localhost:5000/api/status | jq .fps
```

### 测试负载：
```bash
# 启动多个机械臂客户端
for i in {1..5}; do
    python src/robot_client.py --mock &
done
```

## 🎯 高级测试

### 使用真实摄像头：
```python
# 创建摄像头测试脚本
import cv2
import socketio
import base64

sio = socketio.Client()
sio.connect('http://localhost:5000')
sio.emit('register_client', {'type': 'video_source'})

cap = cv2.VideoCapture(0)
while True:
    ret, frame = cap.read()
    if ret:
        _, buffer = cv2.imencode('.jpg', frame)
        frame_data = base64.b64encode(buffer).decode('utf-8')
        sio.emit('video_frame', {'frame': frame_data})
    time.sleep(1/30)
```

### 性能监控：
```bash
# 监控资源使用
top -p $(pgrep -f "python run_web_service.py")

# 监控网络流量
netstat -i
```

## 🎉 测试完成

测试完成后，你应该能看到：
- 实时视频流处理
- 准确的手部检测
- 正确的3D坐标计算
- 稳定的WebSocket通信
- 机械臂控制信号输出

现在你可以将真实的视频流连接到系统，或者集成到你的机械臂控制系统中！