写点什么

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

作者:DisonTangor
  • 2023-03-02
    上海
  • 本文字数:963 字

    阅读完需:约 3 分钟

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

【翻译 Shahid Akhtar Khan 的《How to create a depth map from stereo images in OpenCV Python?》】


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

步骤

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


  • 导入所需的库 OpenCVMatplotlibNumPy。确保您已经安装了它们。

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

  • 创建 StereoBM 对象 stereo = cv2.StereoBM_create() 传递所需的数字差异(numDisparities )块大小(blockSize)

  • 使用 stereo.compute() 计算输入图像之间的视差图。为了获得更好的结果,您可以调整**数字差异(numDisparities )块大小(blockSize)**的值。

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


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

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


# import required librariesimport numpy as npimport cv2from matplotlib import pyplot as plt
# read two input images as grayscale imagesimgL = cv2.imread('L.png',0)imgR = cv2.imread('R.png',0)
# Initiate and StereoBM objectstereo = cv2.StereoBM_create(numDisparities=16, blockSize=15)
# compute the disparity mapdisparity = stereo.compute(imgL,imgR)plt.imshow(disparity,'gray')plt.show()disparity.shape
复制代码


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



输出

当你运行上面的 Python 程序时,它将产生以下输出窗口



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


# import required librariesimport numpy as npimport cv2from matplotlib import pyplot as plt
# read two input imagesimgL = cv2.imread('aloeL.jpg',0)imgR = cv2.imread('aloeR.jpg',0)
# Initiate and StereoBM objectstereo = cv2.StereoBM_create(numDisparities=128, blockSize=15)
# compute the disparity mapdisparity = stereo.compute(imgL,imgR)disparity1 = stereo.compute(imgR,imgL)plt.imshow(disparity,'gray')plt.show()
复制代码



输出

当你运行上面的 Python 程序时,它将产生以下输出窗口



发布于: 刚刚阅读数: 5
用户头像

DisonTangor

关注

怀揣一个武侠梦的男孩 2020-07-29 加入

还未添加个人简介

评论

发布
暂无评论
如何在OpenCV Python中从立体图像创建深度图?_OpenCV_DisonTangor_InfoQ写作社区