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

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

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

步骤

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

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

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

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

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

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

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

例子

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

# 导入所需的库
import numpy as np
import cv2
from matplotlib import pyplot as plt

# 读取两个输入图像作为灰度图像
imgL = cv2.imread('L.png',0)
imgR = cv2.imread('R.png',0)

# 初始化并创建一个StereoBM对象
stereo = cv2.StereoBM_create(numDisparities=16, blockSize=15)

# 计算视差图
disparity = stereo.compute(imgL,imgR)
plt.imshow(disparity,'gray')
plt.show()
disparity.shape

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

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

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

输出

当您运行上述Python程序时,它将产生以下输出窗口−

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

让我们再看一个例子。

例子

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

# 导入所需工具库
import numpy as np
import cv2
from matplotlib import pyplot as plt

# 读取两张输入图像
imgL = cv2.imread('aloeL.jpg',0)
imgR = cv2.imread('aloeR.jpg',0)

# 初始化立体匹配对象和StereoBM对象
stereo = cv2.StereoBM_create(numDisparities=128, blockSize=15)

# 计算视差图
disparity = stereo.compute(imgL,imgR)
disparity1 = stereo.compute(imgR,imgL)
plt.imshow(disparity,'gray')
plt.show()

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

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

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

输出

当您运行上述 Python 程序时,将会显示以下 输出 窗口 –

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Python OpenCV