如何在 OpenCV Python 中从立体图像创建深度图?


可以使用立体图像创建深度图。要从立体图像构建深度图,我们需要找到两幅图像之间的视差。为此,我们使用cv2.StereoBM_create()创建StereoBM类的对象,并使用stereo.comput()计算视差。其中stereo是创建的StereoBM对象。

步骤

要从立体图像创建深度图,您可以按照以下步骤操作:

  • 导入所需的库OpenCV、MatplotlibNumPy。确保您已安装它们。

  • 使用cv2.imread()方法读取两张输入图像作为灰度图像。指定图像的完整路径。

  • 创建一个 StereoBM 对象stereo = cv2.StereoBM_create(),传递所需的numDisparitiesblockSize

  • 使用stereo.compute()计算输入图像之间的视差图。为了获得更好的结果,您可以调整numDisparitiesblockSize的值。

  • 可视化视差图(深度图)。

让我们看一些从立体图像创建深度图的示例。

示例

在此 Python 代码中,我们使用立体图像创建深度图。

# import required libraries import numpy as np import cv2 from matplotlib import pyplot as plt # read two input images as grayscale images imgL = cv2.imread('L.png',0) imgR = cv2.imread('R.png',0) # Initiate and StereoBM object stereo = cv2.StereoBM_create(numDisparities=16, blockSize=15) # compute the disparity map disparity = stereo.compute(imgL,imgR) plt.imshow(disparity,'gray') plt.show() disparity.shape

我们将在上述程序中使用以下图像作为输入文件



输出

运行上述 Python 程序后,它将生成以下输出窗口:


让我们看另一个示例。

示例

在此 Python 代码中,我们使用两张立体图像创建深度图。

# import required libraries import numpy as np import cv2 from matplotlib import pyplot as plt # read two input images imgL = cv2.imread('aloeL.jpg',0) imgR = cv2.imread('aloeR.jpg',0) # Initiate and StereoBM object stereo = cv2.StereoBM_create(numDisparities=128, blockSize=15) # compute the disparity map disparity = stereo.compute(imgL,imgR) disparity1 = stereo.compute(imgR,imgL) plt.imshow(disparity,'gray') plt.show()

我们将在上述程序中使用以下图像作为输入文件



输出

运行上述 Python 程序后,它将生成以下输出窗口:


更新于: 2022-12-05

9K+ 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.