在 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