在 OpenCV 中使用 Erode
Ammar Ali
2022年5月17日
在 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
元素進行腐蝕,但我們可以使用任何大小的結構元素。結構元素的尺寸越大,暗區的增加就越大。
輸出:
正如我們在右側影象中看到的那樣,根據結構元素的大小增加了暗區。
我們可以在 getStructuringElement()
函式中設定的三個可選引數是:
- 第一個引數是形狀。我們在上面的程式碼中使用了矩形,但我們可以使用其他形狀,例如使用
cv2.MORPH_CROSS
引數的十字形和使用cv2.MORPH_ELLIPSE
引數的橢圓形。 - 第二個引數是結構元素的大小。
- 最後一個引數是錨點的位置。預設情況下,錨點的位置設定為
(-1, -1)
,它對應於中心,但我們可以將其更改為元素內的任何位置。
我們可以在 erode()
函式中設定四個可選引數,它們是:
- 我們可以更改的第一個可選引數是錨點的位置,預設設定為
(-1, 1)
。 - 第二個可選引數是迭代次數,設定為 1,但我們可以設定為任意數字。
- 第三個可選引數是邊框型別,預設設定為常量邊框,但我們可以使用
cv2.BORDER_REFLECT
引數將其更改為其他型別,例如反射邊框。檢查此連結以獲取有關邊框型別的更多詳細資訊。 - 最後一個可選引數是邊框的值,如果是常量邊框。
如果我們想增加影象中的明亮區域而不是增加黑暗區域,我們可以使用 OpenCV 的 dilate()
函式。
Author: Ammar Ali