我找到了一个关于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()
简短问题:
外极线必须是平行的吗?我有两个相机,作为一个立体系统,但有一个小的旋转和平移,因为我只是把他们放在一张桌子上。所以我的外线是不平行的。你知道吗
是的,极线需要平行
createStereoBM
才能工作。你知道吗为此,您需要估计两个相机之间的外部校准(旋转和平移)。它的工作原理与单摄像机校准基本相同。有一些立体声校准教程,但我还没有找到一个好的python刚刚。看看ROS camera calibration tool。你知道吗
下一步你需要校正你的相机图像。这意味着你使用的映射,你从立体校准和扭曲你的图像,使外极线是平行的。看看OpenCV的
stereoRectify
文档:here。你知道吗当您使用我链接的文档中建议的校准参数调用
initUndistortRectifyMap
时,您的图像会扭曲,使极线平行,现在您应该能够使用createStereoBM
创建视差图。你知道吗相关问题 更多 >
编程相关推荐