如何在 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