如何在 OpenCV Python 中從立體影像建立深度圖?


可以使用立體影像建立深度圖。要從立體影像構建深度圖,我們需要找到兩幅影像之間的視差。為此,我們使用cv2.StereoBM_create()建立StereoBM類的物件,並使用stereo.comput()計算視差。其中stereo是建立的StereoBM物件。

步驟

要從立體影像建立深度圖,您可以按照以下步驟操作:

  • 匯入所需的庫OpenCV、MatplotlibNumPy。確保您已安裝它們。

  • 使用cv2.imread()方法讀取兩張輸入影像作為灰度影像。指定影像的完整路徑。

  • 建立一個 StereoBM 物件stereo = cv2.StereoBM_create(),傳遞所需的numDisparitiesblockSize

  • 使用stereo.compute()計算輸入影像之間的視差圖。為了獲得更好的結果,您可以調整numDisparitiesblockSize的值。

  • 視覺化視差圖(深度圖)。

讓我們看一些從立體影像建立深度圖的示例。

示例

在此 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 程式後,它將生成以下輸出視窗:


更新於: 2022-12-05

9K+ 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告