如何在OpenCV Python中从立体图像创建深度图
可以使用立体图像来创建深度图。为了从立体图像构建深度图,我们找到两个图像之间的视差。为此,我们使用cv2.StereoBM_create()创建一个StereoBM类的对象,并使用stereo.compute()计算视差。其中stereo是创建的StereoBM对象。
步骤
要从立体图像创建深度图,可以按照以下步骤进行:
- 导入所需的库OpenCV,Matplotlib和NumPy。确保您已经安装了它们。
-
使用cv2.imread()方法作为灰度图像读取两个输入图像。指定图像的完整路径。
-
创建一个带有所需numDisparities和blockSize的StereoBM对象stereo = cv2.StereoBM_create()。
-
使用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程序时,它将产生以下 输出 窗口 –