中文 | English
OGScope 调试控制台是一个专为开发者设计的相机调试工具,提供实时预览、拍摄控制、参数调节、预设管理和文件管理等功能。
- 低内存板优先的实时相机预览,目标帧率由
preview_target_fps与运行时节流共同决定 - 支持启动/停止预览
- 实时状态显示:采集帧率、预览帧率、曝光、消费者数量、编码器与内存压力
- 单张拍摄: 拍摄高质量照片并自动保存
- 视频录制: 手动控制录制时长,支持MP4格式
- 文件命名: 自动生成时间戳文件名
- 参数记录: 每次拍摄自动生成参数记录文件
- 曝光时间: 1ms - 100ms (微秒级调节)
- 模拟增益: 1x - 16x (0.1x步进)
- 数字增益: 1x - 4x (0.1x步进)
- 白平衡:
auto/manual/night,手动模式可设置红/蓝增益 - 自动曝光上限:
camera_auto_exposure_max_us控制暗场最长帧周期 - 防闪烁与降噪: 支持 AE flicker 与语义降噪模式
- 预览编码器:
auto/turbojpeg/opencv - 实时应用: 参数修改立即生效
- 一键重置: 恢复到默认设置
- 保存预设: 最多10个预设
- 快速应用: 一键应用保存的预设
- 预设描述: 支持预设描述信息
- 预设删除: 删除不需要的预设
- 文件列表: 查看所有拍摄文件
- 文件下载: 直接下载到本地
- 文件信息: 查看详细的拍摄参数
- 自动刷新: 拍摄后自动更新文件列表
# 安装Python依赖(建议在虚拟环境中)
pip install -U pip setuptools wheel
pip install opencv-python-headless fastapi uvicorn numpy pillow
# 安装相机驱动 (树莓派)
sudo apt install -y python3-picamera2 libcamera-apps# 使用Poetry启动 (推荐) - 主入口
poetry run python -m ogscope.main
# 或直接启动
python -m ogscope.web.app打开浏览器访问: http://localhost:8000/debug
-
启动相机预览
- 点击 "启动预览" 按钮
- 等待相机初始化完成
- 查看实时画面
-
调整相机参数
- 切换到 "参数设置" 标签页
- 拖动滑块调整曝光和增益
- 点击 "应用设置" 使参数生效
-
拍摄照片
- 切换到 "拍摄控制" 标签页
- 点击 "拍摄照片" 按钮
- 照片自动保存到
~/dev_captures/目录
-
录制视频
- 点击 "开始录制" 按钮
- 录制过程中显示计时器
- 点击 "停止录制" 结束录制
-
管理预设
- 切换到 "预设管理" 标签页
- 输入预设名称和描述
- 点击 "保存预设" 保存当前设置
- 点击预设卡片上的 "应用" 快速切换
-
查看文件
- 切换到 "文件管理" 标签页
- 查看所有拍摄文件
- 点击 "下载" 下载文件到本地
- 点击 "详情" 查看拍摄参数
空格键: 启动/停止预览C: 拍摄照片R: 开始/停止录制1-5: 切换标签页Esc: 停止录制
~/dev_captures/ # 拍摄文件存储目录
├── IMG_20241201_143022.jpg # 拍摄的照片
├── IMG_20241201_143022.txt # 对应的参数文件
├── VID_20241201_143045.mp4 # 录制的视频
├── VID_20241201_143045.txt # 对应的参数文件
└── presets.json # 预设配置文件
每个拍摄文件都会生成对应的 .txt 参数文件,包含以下信息:
{
"filename": "IMG_20241201_143022",
"timestamp": "2024-12-01T14:30:22.123456",
"exposure_us": 10000,
"analogue_gain": 2.0,
"digital_gain": 1.0,
"resolution": "1920x1080",
"file_size": 2048576,
"camera_type": "imx327_mipi",
"fps": 15
}调试控制台提供以下API接口:
GET /api/dev/debug/camera/status- 获取相机状态POST /api/dev/debug/camera/start- 启动相机POST /api/dev/debug/camera/stop- 停止相机GET /api/dev/debug/camera/preview- 获取预览图像
POST /api/dev/debug/camera/capture- 拍摄照片POST /api/dev/debug/camera/record/start- 开始录制POST /api/dev/debug/camera/record/stop- 停止录制
POST /api/dev/debug/camera/settings- 更新相机设置POST /api/dev/debug/camera/reset- 重置到默认设置
当前相机状态还会返回调试字段:
| 字段 | 说明 |
|---|---|
sensor_target_fps / preview_target_fps |
传感器与预览目标帧率 |
actual_capture_fps / actual_preview_fps |
实测采集与预览帧率 |
actual_exposure_us / frame_duration_us |
当前曝光与帧周期 |
preview_consumers / analysis_consumers / recording_consumers |
预览、分析、录制消费者数量 |
jpeg_average_encode_ms / jpeg_cached_bytes |
JPEG 编码耗时与缓存大小 |
throttle_reason |
当前节流原因,例如低内存或无消费者 |
process_rss_kb / process_swap_kb / cma_free_kb |
进程内存、swap 与 CMA 可用量 |
preview_encoder / jpeg_source_format |
当前预览编码器和输入格式 |
camera_driver / camera_backend |
相机驱动与后端名称 |
lores_enabled / lores_available / lores_width / lores_height / lores_format |
低分辨率辅助流状态 |
GET /api/dev/debug/camera/presets- 获取预设列表POST /api/dev/debug/camera/presets- 保存预设POST /api/dev/debug/camera/presets/{name}/apply- 应用预设DELETE /api/dev/debug/camera/presets/{name}- 删除预设
GET /api/dev/debug/files- 获取文件列表GET /api/dev/debug/files/{filename}- 下载文件GET /api/dev/debug/files/{filename}/info- 获取文件信息
运行测试脚本验证功能:
# 运行完整测试
python scripts/test_debug_console.py
# 只测试API
python scripts/test_debug_console.py --test api
# 只测试Web界面
python scripts/test_debug_console.py --test web
# 只检查依赖
python scripts/test_debug_console.py --test deps- 硬件要求: 需要支持Picamera2的树莓派设备
- 权限要求: 相机访问需要适当的系统权限
- 存储空间: 确保有足够的存储空间保存拍摄文件
- 网络访问: 调试控制台通过Web界面访问,确保网络连接正常
- 32 位系统: OpenCV、SciPy、PyTurboJPEG 在 32 位系统上可能没有合适 wheel,优先使用系统包或 piwheels;低内存板建议降低预览帧率并启用自动编码器选择。
这些配置可通过环境变量或配置文件进入运行时。名称与 ogscope/config.py 一致:
| 配置 | 默认 | 说明 |
|---|---|---|
camera_idle_shutdown_sec |
20.0 |
无消费者后相机热驻留时间,超时后释放采集 |
camera_frame_stale_timeout_sec |
5.0 |
超过该时间没有成功帧时重新探测 |
camera_white_balance_mode |
auto |
auto / manual / night |
camera_white_balance_gain_r / camera_white_balance_gain_b |
1.0 |
手动白平衡红/蓝增益 |
camera_night_mode |
false |
启动时应用夜间白平衡标记 |
camera_auto_exposure_max_us |
2000000 |
自动曝光最长帧周期,暗场允许降低帧率 |
camera_ae_flicker_mode |
off |
off / 50hz / 60hz |
camera_noise_reduction_mode |
fast |
off / fast / high_quality |
camera_lores_enabled |
true |
启用低分辨率辅助流统计 |
camera_lores_width / camera_lores_height |
320 / 240 |
低分辨率辅助流尺寸 |
camera_lores_format |
YUV420 |
低分辨率辅助流格式 |
preview_encoder |
auto |
auto / turbojpeg / opencv |
-
相机初始化失败
- 检查 Picamera2 是否正确安装:
python3 -c "from picamera2 import Picamera2; print('OK')" - 确认相机硬件连接正常:
ls /dev/video* - 检查系统权限
- 服务进程需能访问系统的 Picamera2 与 libcamera,必要时为服务设置环境变量:
PYTHONPATH=/usr/lib/python3/dist-packages:/usr/local/lib/python3.13/dist-packagesLD_LIBRARY_PATH=/usr/lib/aarch64-linux-gnu
- 检查 Picamera2 是否正确安装:
-
预览无法显示
- 确认相机已启动
- 检查OpenCV是否正确安装
- 查看浏览器控制台错误信息
-
文件保存失败
- 检查存储目录权限
- 确认磁盘空间充足
- 查看服务器日志
-
预设保存失败
- 检查预设名称是否重复
- 确认预设数量未超过限制(10个)
- 检查文件写入权限
# 查看应用日志
tail -f /home/<user>/ogscope_server.log
# 查看系统日志
journalctl -u ogscope.service -f- 本项目在树莓派上使用系统自带的 Picamera2 与 libcamera。
- 如在虚拟环境中运行,需要将系统的 Python 包路径注入到服务进程:
PYTHONPATH=/usr/lib/python3/dist-packages:/usr/local/lib/python3.13/dist-packagesLD_LIBRARY_PATH=/usr/lib/aarch64-linux-gnu
- 推荐将上述环境变量固化到启动脚本或 systemd 服务的 Environment 配置,以避免重复调试。
如果遇到问题,请:
- 查看本文档的故障排除部分
- 运行测试脚本检查系统状态
- 查看应用日志获取详细错误信息
- 提交Issue到项目仓库
OGScope 调试控制台 - 让相机调试更简单! 🎯