gpt4 book ai didi

python - 具有非平行外线的立体图像的 OpenCV 深度图

转载 作者:行者123 更新时间:2023-12-01 00:29:10 24 4
gpt4 key购买 nike

我找到了一个关于 getting a depth map from stereo images 的教程其中包含这段代码:

import numpy as np
import cv2
from matplotlib import pyplot as plt

imgL = cv2.imread('tsukuba_l.png',0)
imgR = cv2.imread('tsukuba_r.png',0)

stereo = cv2.createStereoBM(numDisparities=16, blockSize=15)
disparity = stereo.compute(imgL,imgR)
plt.imshow(disparity,'gray')
plt.show()

简短问题:

极线必须平行才能使该算法发挥作用吗?我有两个相机,它们充当立体系统,但它们之间有一个小的旋转和平移,因为我只是将它们放在 table 上。所以我的轮廓线到目前为止并不平行。

最佳答案

是的,createStereoBM 需要使极线平行才能工作。

为此,您需要估计两个相机之间的外部校准(旋转和平移)。它的工作原理与单相机校准基本相同。那里有一些立体校准教程,但我现在还没有找到一个好的 python 教程。看看ROS camera calibration tool .

接下来您需要校正相机图像。这意味着您使用从立体校准获得的映射并扭曲图像,使极线平行。查看 OpenCV 的 stereoRectify 文档:here .

当您使用我链接的文档中建议的校准参数调用 initUn DistortifyMap 时,您的图像会扭曲,以便极线平行,现在您应该能够使用 createStereoBM 创建视差图。

关于python - 具有非平行外线的立体图像的 OpenCV 深度图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58321848/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com