如何在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 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 程序时,它将产生以下输出窗口
在这里插入图片描述

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值