我是 OpenCV 的新手,我构建了 openCV 并安装了 Qt 以成功运行示例http://code.google.com/p/opencvstereovision/source/checkout。结果是左右网络摄像头捕获,并在校准后为两者和深度图校正图像。我想做以下事情。我将单击一个对象以聚焦于这些左侧或右侧图像中的任何一个。然后我想检测另一张图像中的相应像素并计算到这个物体的距离。我不知道现在该做什么,我需要指导。也许如果我先计算对应点,我可能会解决剩下的问题。我怎样才能做到这一点?
问问题
9464 次
2 回答
4
看起来你对需要什么有一个很好的了解。这有点像一罐蠕虫-因此,我一如既往地建议您获取著名的 Hartley & Zisserman 书籍以获得规范的解释。这是相关章节的链接。
但简而言之...
我没有直接使用 opencvstereovision 包装类,但听起来它已经使校准(相机内在和外在)变得头疼,并通过平面几何的单应矩阵 (H) 或基本矩阵 (F) 计算了校正对于更复杂的对极几何。
可能类似于此原始帖子。
这种校正意味着它已经建立了每个图像中相同点之间的数学映射。
在之前的答案(来自我)中,您可以通过使用基本矩阵执行三角测量来进行数学运算 - 即计算距离。
但是,请注意,此距离仅在图像坐标系中(即以像素为单位)。
执行“现实世界”测量(即实际物理距离)实际需要的是计算基本矩阵 (E),它结合了基本矩阵和相机内在函数 (K),如果您愿意,可以将距离投影到真实世界。
于 2013-01-16T15:25:57.487 回答
1
class StereoVar
{
StereoVar();
StereoVar( int levels, double pyrScale,
int nIt, int minDisp, int maxDisp,
int poly_n, double poly_sigma, float fi,
float lambda, int penalization, int cycle,
int flags);
virtual ~StereoVar();
virtual void operator()(InputArray left, InputArray right, OutputArray disp);
int levels;
double pyrScale;
int nIt;
int minDisp;
int maxDisp;
int poly_n;
double poly_sigma;
float fi;
float lambda;
int penalization;
int cycle;
int flags;
...
};
于 2013-01-16T15:11:52.347 回答