OpenCV 立体匹配

Posted

技术标签:

【中文标题】OpenCV 立体匹配【英文标题】:OpenCV Stereo Matching 【发布时间】:2012-10-12 14:35:31 【问题描述】:

我是 OpenCV 的新手。我正在使用 2 个网络摄像头进行立体声项目。我可以将网络摄像头捕获的视频显示为左右视频。我想做以下事情:当我单击左帧上的任何点时,我想在右侧图像上找到匹配点(使用块匹配或任何其他算法将点投影到第二个视图上)。所以我可以计算差异。我怎样才能做到这一点?提前致谢。

【问题讨论】:

【参考方案1】:

OpenCV 的 StereoVar 对象可能是一个很好的起点。

您可以像这样创建StereoVar 对象:

StereoVar myStereoVar(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);

然后像这样匹配成对的图像:

// disp will hold correspondences for each pixel in your pair of images.
myStereoVar(InputArray left, InputArray right, OutputArray disp); 

您可能需要将cv::Mat 转换为InputArray,但这应该很简单。

至于点击像素查看对应关系,我敢打赌这是可能的,但让我们在对应关系计算启动并运行后担心这个问题。

【讨论】:

以上是关于OpenCV 立体匹配的主要内容,如果未能解决你的问题,请参考以下文章

立体匹配:关于OpenCV读写middlebury网站的给定的视差的代码

OpenCV立体匹配算法 StereoBM/StereoSGBM/StereoVar

FlannBasedMatcher 立体匹配

基于python的opencv中SGBM立体匹配算法实现

基于Opencv的几种立体匹配算法+ELAS

opencv中四种立体匹配算法示例(StereoBM,StereoSGBM,StereoBinaryBM, StereoBinarySGBM)