在 OpenCV 中使用 Erode

Ammar Ali 2022年5月17日
在 OpenCV 中使用 Erode

在 OpenCV 中,腐蝕使用特定的結構元素增加了影象中存在的暗區。我們可以使用 OpenCV 的 erode() 函式來查詢影象的腐蝕。

在 OpenCV 中使用 erode() 函式查詢影象的侵蝕

erode() 函式找到給定結構元素區域的區域性最小值。

我們需要一個結構元素來找到影象的侵蝕。我們可以使用 getStructuringElement() 函式來建立特定形狀的核心,例如矩形。

之後,我們需要在 erode() 函式中將給定影象與核心一起傳遞,它會找到給定影象的腐蝕。

例如,讓我們使用 imread() 函式讀取一張貓的影象,並使用 erode() 函式增加其中的暗區。

然後使用 OpenCV 的 imshow() 函式將其與原始影象一起顯示。

import cv2

src_img = cv2.imread("cat.jpg")

kernel_img = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))
image_erode = cv2.erode(src_img, kernel_img)

cv2.imshow('Source Img', src_img)
cv2.imshow('Eroded Img', image_erode)
cv2.waitKey()
cv2.destroyAllWindows()

我們使用 5×5 structuring 元素進行腐蝕,但我們可以使用任何大小的結構元素。結構元素的尺寸越大,暗區的增加就越大。

輸出:

在 OpenCV 中使用 erode() 函式來腐蝕影象

正如我們在右側影象中看到的那樣,根據結構元素的大小增加了暗區。

我們可以在 getStructuringElement() 函式中設定的三個可選引數是:

  • 第一個引數是形狀。我們在上面的程式碼中使用了矩形,但我們可以使用其他形狀,例如使用 cv2.MORPH_CROSS 引數的十字形和使用 cv2.MORPH_ELLIPSE 引數的橢圓形。
  • 第二個引數是結構元素的大小。
  • 最後一個引數是錨點的位置。預設情況下,錨點的位置設定為 (-1, -1),它對應於中心,但我們可以將其更改為元素內的任何位置。

我們可以在 erode() 函式中設定四個可選引數,它們是:

  • 我們可以更改的第一個可選引數是錨點的位置,預設設定為 (-1, 1)
  • 第二個可選引數是迭代次數,設定為 1,但我們可以設定為任意數字。
  • 第三個可選引數是邊框型別,預設設定為常量邊框,但我們可以使用 cv2.BORDER_REFLECT 引數將其更改為其他型別,例如反射邊框。檢查此連結以獲取有關邊框型別的更多詳細資訊。
  • 最後一個可選引數是邊框的值,如果是常量邊框。

如果我們想增加影象中的明亮區域而不是增加黑暗區域,我們可以使用 OpenCV 的 dilate() 函式。

Author: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

相關文章 - OpenCV Image