Skip to content

JoeFirmament/CameraTool_PY

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎬 CameraTool_PY - 专业摄像头工具集

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)

🚀 双摄录制器详细操作

快速开始(30秒上手)

python3 dual_camera_recorder.py

📱 界面操作流程

  1. 自动检测: 程序启动时自动识别摄像头
  2. 参数设置: 选择输出目录,调整FPS(默认30)
  3. 开始录制: 点击"● Start Recording"
  4. 实时预览: 录制时可看到两个摄像头画面
  5. 停止录制: 点击"■ Stop Recording"
  6. 导出静帧: 点击"📸 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对应关系,便于理解

🛠️ 其他工具快速参考

透视变换标定 (homography.py)

Homography calibration UI overview

用途: 建立篮球场地坐标系,分析球员位置轨迹

python3 homography.py

工作流程

  1. 自动检测设备: 程序启动后会调用 camera_utils.CameraManager 枚举摄像头并填充下拉框,可在右侧卡片中选择分辨率,然后开启预览。
  2. 采集标定点: 勾选“Calibration Mode”后在画布上点击采集像素坐标;弹窗中输入对应的世界坐标(单位mm),列表会实时记录点位。
  3. 编辑与管理: 列表支持选中后 EditDelete,也可以一键 Clear All 重置,确保至少保留4个有效点用于矩阵求解。
  4. 计算单应矩阵: 点击 Calculate Homography Matrix 触发RANSAC求解,结果会写入状态日志;若成功,可 Save 导出JSON,或 Load 载入历史标定。
  5. 验证与辅助工具: 启用 Verification Mode 在画面上点击可回读世界坐标;Show Y-axis 5-10m verification points 会基于矩阵叠加验证点;Polar Coordinate 模块可配置极坐标原点,辅助角度分析。
  6. 帧保存: Save Current Frame 会保存叠加标注的预览图,便于复盘步骤。

调试提示

  • 预览画面底部日志窗口会记录所有操作,出现摄像头或矩阵错误时优先查看日志输出。
  • 若求解失败,确认输入点位的世界坐标单位一致,或在状态栏提示后重新录制更平整的标定图像。
  • 验证模式显示的极坐标结果可帮助排查原点配置问题;需要重置时在 Polar Coordinate 区域更新原点后重新验证。

输出数据

  • 保存的JSON包含像素/世界坐标、单应矩阵、极坐标配置等字段,可直接供 fix_origin_offset.py 或录像工具加载。

相机校正 (camera_calibration.py)

用途: 消除镜头畸变,提高测量精度

python3 camera_calibration.py
# 1. 准备棋盘格 → 2. 多角度拍摄 → 3. 自动检测 → 4. 计算参数

设备检测 (test_camera_detection.py)

用途: 检查摄像头兼容性,显示稳定设备路径

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-utils
ls -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路径自动识别

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •