2分钟快速上手 | 双摄同步录制 | 智能静帧导出 | 篮球场地分析
为篮球训练和科研数据采集打造的专业工具套件
# 克隆并运行(3步完成)
git clone <repo> && cd CameraTool_PY
pip install opencv-python numpy Pillow
python3 dual_camera_recorder.py # 🚀 立即开始录制!| 工具 | 用途 | 特色功能 | 运行命令 |
|---|---|---|---|
| 双摄录制器 📹 | 同步录制多角度视频 | • 自动检测摄像头 • 录制时实时预览 • 智能静帧导出 • 稳定设备路径管理 |
python3 dual_camera_recorder.py |
| 透视标定 📐 | 场地坐标映射 | • 图形化标定界面 • 运动轨迹分析 • 统一摄像头管理 |
python3 homography.py |
| 相机校正 🔧 | 消除镜头畸变 | • 棋盘格自动检测 • 精确测量校正 |
python3 camera_calibration.py |
| 设备检测 🔍 | 摄像头兼容性测试 | • 显示设备详细信息 • by-id路径支持 • 排查连接问题 |
python3 test_camera_detection.py |
- Python: 3.7+ (支持Tkinter)
- 系统: Linux (推荐 Ubuntu/Debian)
- 硬件: 2个USB摄像头
- 依赖:
sudo apt install v4l-utils(Linux)
python3 dual_camera_recorder.py- 自动检测: 程序启动时自动识别摄像头
- 参数设置: 选择输出目录,调整FPS(默认30)
- 开始录制: 点击"● Start Recording"
- 实时预览: 录制时可看到两个摄像头画面
- 停止录制: 点击"■ Stop Recording"
- 导出静帧: 点击"📸 Export Frames"
录制完成后自动生成:
basketball_recording_20250123_143052/
├── camera1_20250123_143052.avi # 摄像头1视频(带时间戳)
├── camera2_20250123_143052.avi # 摄像头2视频(带时间戳)
└── recording_info.json # 录制信息
导出静帧后:
frames_export_20250123_143500_basketball_recording_20250123_143052/
├── camera1/
│ ├── camera1_20250123_143052_frame_000030_t1.00s.jpg
│ └── camera1_20250123_143052_frame_000060_t2.00s.jpg
└── camera2/
├── camera2_20250123_143052_frame_000030_t1.00s.jpg
└── camera2_20250123_143052_frame_000060_t2.00s.jpg
💡 命名规律:
摄像头_日期时间_frame_帧数_t时间戳.jpg
- 智能摄像头检测: 自动使用稳定的by-id设备路径,硬件重插后仍能识别
- 手动选择摄像头: 勾选"Manual camera selection"进行精确控制
- 画面旋转: 支持0°、90°、180°、270°旋转
- 分辨率调整: 支持多种分辨率(自动检测摄像头支持,显示FPS信息)
- 静帧间隔: 可设置每N帧导出一张图片
- 设备路径显示: 界面显示by-id和/dev/videoX对应关系,便于理解
用途: 建立篮球场地坐标系,分析球员位置轨迹
python3 homography.py工作流程
- 自动检测设备: 程序启动后会调用
camera_utils.CameraManager枚举摄像头并填充下拉框,可在右侧卡片中选择分辨率,然后开启预览。 - 采集标定点: 勾选“Calibration Mode”后在画布上点击采集像素坐标;弹窗中输入对应的世界坐标(单位mm),列表会实时记录点位。
- 编辑与管理: 列表支持选中后
Edit或Delete,也可以一键Clear All重置,确保至少保留4个有效点用于矩阵求解。 - 计算单应矩阵: 点击
Calculate Homography Matrix触发RANSAC求解,结果会写入状态日志;若成功,可Save导出JSON,或Load载入历史标定。 - 验证与辅助工具: 启用
Verification Mode在画面上点击可回读世界坐标;Show Y-axis 5-10m verification points会基于矩阵叠加验证点;Polar Coordinate模块可配置极坐标原点,辅助角度分析。 - 帧保存:
Save Current Frame会保存叠加标注的预览图,便于复盘步骤。
调试提示
- 预览画面底部日志窗口会记录所有操作,出现摄像头或矩阵错误时优先查看日志输出。
- 若求解失败,确认输入点位的世界坐标单位一致,或在状态栏提示后重新录制更平整的标定图像。
- 验证模式显示的极坐标结果可帮助排查原点配置问题;需要重置时在
Polar Coordinate区域更新原点后重新验证。
输出数据
- 保存的JSON包含像素/世界坐标、单应矩阵、极坐标配置等字段,可直接供
fix_origin_offset.py或录像工具加载。
用途: 消除镜头畸变,提高测量精度
python3 camera_calibration.py
# 1. 准备棋盘格 → 2. 多角度拍摄 → 3. 自动检测 → 4. 计算参数用途: 检查摄像头兼容性,显示稳定设备路径
python3 test_camera_detection.py # 显示by-id路径、分辨率、FPS等详细信息
# 或者直接测试camera_utils模块
python3 -c "from camera_utils import CameraManager; CameraManager.test_camera_detection()"| 问题 | 解决方案 |
|---|---|
| 😵 摄像头检测失败 | sudo apt install v4l-utilsls -la /dev/video* 检查权限运行 python3 test_camera_detection.py 诊断 |
| 🔄 画面旋转错误 | 使用界面中的"旋转"选项调整 |
| 📷 预览画面黑屏 | 检查摄像头被其他程序占用 查看控制台输出的设备路径尝试信息 |
| 💾 导出静帧失败 | 确认视频文件完整,检查输出目录权限 |
| 🐌 录制卡顿 | 降低分辨率或FPS,检查USB带宽 |
| 🔌 设备路径变化 | 新版本使用by-id稳定路径,硬件重插后自动适配 |
- 🏀 篮球训练: 双角度同步录制 → 战术分析 → 静帧导出关键动作
- 🔬 科研数据: 校正镜头畸变 → 精确测量 → 立体视觉重建
- 📊 运动分析: 场地标定 → 轨迹追踪 → 数据可视化
# 最常用命令
python3 dual_camera_recorder.py # 🎬 开始录制
python3 test_camera_detection.py # 🔍 检测摄像头
pip install opencv-python numpy Pillow # 📦 安装依赖
sudo apt install v4l-utils # 🔧 Linux支持💡 小贴士: 首次使用建议先运行设备检测,确认摄像头正常后再开始录制
最后更新: 2025年8月 | 统一摄像头管理模块 | 稳定设备路径支持 | by-id路径自动识别
