Opencv 从视差图中获取真实深度
我想得到物体和立体相机的真实距离。我使用的是学习OpenCV O'Reilly一书中给出的OpenCV示例代码。获得视差图后,我想使用以下公式: 距离=焦距*基线距离/视差 问题是:Opencv 从视差图中获取真实深度,opencv,computer-vision,stereo-3d,Opencv,Computer Vision,Stereo 3d,我想得到物体和立体相机的真实距离。我使用的是学习OpenCV O'Reilly一书中给出的OpenCV示例代码。获得视差图后,我想使用以下公式: 距离=焦距*基线距离/视差 问题是: 我得到了差异的负值。如何转换这些值以便在实际深度计算中使用 在上面的公式中,焦距和基线距离以毫米为单位(由重投影矩阵返回),而视差以像素为单位。因此,结果将以毫米^2/像素为单位。如何将视差值从像素转换为毫米 可以使用CVs立体对应函数,例如立体块匹配或半全局块匹配。这将为整个图像提供一个视差图,可以使用Q矩阵(c
可以使用CVs立体对应函数,例如立体块匹配或半全局块匹配。这将为整个图像提供一个视差图,可以使用Q矩阵(cv::ReprojectionMageto3D)将其转换为3D点。这里有两个问题:
您需要首先执行步骤,以获得正确的参数,即摄影机矩阵 一旦有了这些值,就可以使用校正值(从相机校准步骤获得的值,称为重新映射或不失真)对进行适当的计算,然后,为了获得真实深度(以毫米或米为单位),最后可以执行以下操作:
depth = baseline * focal / disparity
为什么我会得到差异的负值?据我所知,这应该是积极的。这和摄像机的方位有关吗?