我想从立体相机获取物体的真实距离。我正在使用 Learning OpenCV O'Reilly 书中给出的 OpenCV 示例代码。获得视差图后我想使用公式:
distance = focal_length * baseline distance/disparity
问题是:
我得到的差异为负值。如何转换这些值以便在实际深度计算中使用它们?
在上面的公式中,焦距和基线距离以毫米为单位(由重投影矩阵返回),而视差以像素为单位。所以结果将以 mm^2/像素为单位。如何将视差值从像素转换为毫米。
最佳答案
您需要执行一个 camera calibration 第一步,获取合适的参数,称为相机矩阵。
有了这些值,您就可以对 disparity map 进行适当的计算 使用校正值(从相机校准步骤获得的值,称为重新映射 或不失真),然后获得真实深度(以毫米或米),你终于可以做到:
depth = baseline * focal / disparity
关于opencv - 从视差图中获取真实深度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23039961/