如何在 OpenCV Python 中从立体图像创建深度图?
可以使用立体图像创建深度图。要从立体图像构建深度图,我们需要找到两幅图像之间的视差。为此,我们使用cv2.StereoBM_create()创建StereoBM类的对象,并使用stereo.comput()计算视差。其中stereo是创建的StereoBM对象。
步骤
要从立体图像创建深度图,您可以按照以下步骤操作:
导入所需的库OpenCV、Matplotlib和NumPy。确保您已安装它们。
使用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 程序后,它将生成以下输出窗口:

广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP