4.0 KiB
4.0 KiB
VrEyeView 使用说明
功能概述
VrEyeView 是一个相机图像查看与标定板检测工具,用于:
- 实时显示相机图像
- 检测标定板角点
- 计算标定板位姿(位置和姿态)
- 将检测结果回调给 CalibView 作为相机坐标
快速开始
1. 独立运行 VrEyeView
# Windows
cd Tools/VrEyeView
VrEyeView.exe
# Linux
cd Tools/VrEyeView
./VrEyeView
2. 在 CalibView 中使用
- 启动 CalibView
- 菜单栏 -> 工具 -> 相机标定板检测
- VrEyeView 窗口会打开
操作步骤
步骤 1: 连接相机
- 输入相机 IP 地址(默认: 192.168.1.100)
- 点击"连接"按钮
- 等待连接成功,状态显示"已连接"
步骤 2: 配置相机参数
- 曝光: 调整曝光时间(100-10000),默认 1000
- 增益: 调整增益值(0-255),默认 100
步骤 3: 配置标定板参数
- 内角点宽度: 标定板内部角点的列数(默认 9)
- 内角点高度: 标定板内部角点的行数(默认 6)
- 格子大小: 标定板每个格子的边长,单位 mm(默认 30.0)
注意: 内角点数量 = 格子数量 - 1 例如:10x7 的格子标定板,内角点为 9x6
步骤 4: 配置相机内参
相机内参需要提前标定,或使用默认值:
- fx: 焦距 x(默认 1000.0)
- fy: 焦距 y(默认 1000.0)
- cx: 主点 x(默认 640.0)
- cy: 主点 y(默认 480.0)
步骤 5: 开始采集
- 点击"开始采集"按钮
- 图像会实时显示在窗口中
- 状态显示"采集中"
步骤 6: 检测标定板
手动检测:
- 将标定板放置在相机视野内
- 点击"检测标定板"按钮
- 如果检测成功,角点会以绿色圆圈标记在图像上
- 检测结果显示在界面底部
自动检测:
- 勾选"自动检测"复选框
- 每次获取新图像时会自动检测标定板
- 检测成功后自动回调到 CalibView
步骤 7: 查看检测结果
检测成功后,界面会显示:
检测结果: 位置(x, y, z) 姿态(rx°, ry°, rz°)
- 位置: 标定板中心在相机坐标系下的坐标(单位:mm)
- 姿态: 标定板的欧拉角(单位:度)
检测选项
- 自适应阈值: 使用自适应阈值算法,提高不同光照条件下的检测率
- 归一化图像: 对图像进行归一化处理,提高检测稳定性
- 自动检测: 每次获取新图像时自动检测标定板
与 CalibView 集成
当在 CalibView 中打开 VrEyeView 时:
- 检测到标定板后,结果会自动回调到 CalibView
- 标定板的位置和姿态会自动填充到 CalibView 的相机坐标输入框
- 可以配合机器人控制工具(RobotView)进行手眼标定
手眼标定流程
- 在 CalibView 中选择标定模式(Eye-To-Hand 或 Eye-In-Hand)
- 打开 VrEyeView 和 RobotView
- 移动机器人到不同位置
- 在每个位置:
- RobotView 获取机器人位姿 -> 自动填充到 CalibView
- VrEyeView 检测标定板 -> 自动填充到 CalibView
- 点击"添加"按钮添加数据点
- 收集足够数据点后(建议 10 组以上)
- 点击"标定"按钮执行标定
技术参数
- 支持的图像格式: RGB(3 通道)
- 标定板类型: 棋盘格标定板
- 内角点范围: 2-20 x 2-20
- 格子大小范围: 1-100 mm
- 位姿计算方法: OpenCV solvePnP (ITERATIVE)
- 角点精细化: 亚像素级别(11x11 窗口)
开发接口
如果需要在其他程序中使用 VrEyeView:
#include "VrEyeViewWidget.h"
// 创建窗口
VrEyeViewWidget* viewer = new VrEyeViewWidget();
// 设置回调
viewer->SetDetectionCallback([](const ChessboardDetectionData& data) {
if (data.detected) {
// 处理检测结果
qDebug() << "位置:" << data.x << data.y << data.z;
qDebug() << "姿态:" << data.rx << data.ry << data.rz;
}
});
// 显示窗口
viewer->show();