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
opencv中四种立体匹配算法示例(StereoBM,StereoSGBM,StereoBinaryBM, StereoBinarySGBM)