我是一个OpenCV的新手,我已经构建了OpenCV并安装了Qt来运行这个例子http://code.google.com/p/opencvstereovision/source/checkout。结果是左右摄像头捕捉图像,校准后得到两个矫正后的图像和深度图。我想要做以下工作。我将在任何一个左或右图像上单击对象以聚焦。然后,我想检测另一幅图像中的相应像素并计算到该对象的距离。我现在不知道该怎么做,需要指导。也许如果我先计算出相应的点,我可以解决剩下的问题。我该如何做到这一点?
看起来您已经了解了所需的内容。但这是一个棘手的问题——所以我建议参考著名的Hartley&Zisserman书籍,以获取权威解释。这里有相关章节的链接。
简单来说...
我没有直接使用过opencvstereovision包装类,但听起来它已经消除了标定相机内部和外部参数的烦恼,并通过单应性矩阵(H)计算平面几何中的矫正,或通过基础矩阵(F)计算更复杂的极线几何的矫正。
可能和这个原始帖子相似。
这种矫正意味着已经建立了两幅图像中同一点之间的数学映射。
在我之前的回答中,您可以使用基础矩阵进行三角测量,即计算距离。然而,请注意这个距离仅限于图像坐标系(即以像素为单位)。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;
...
};