OpenCV Python - 形态转换


基于图像形状对图像进行的简单操作称为形态变换。两种最常见的变换是腐蚀和膨胀

侵蚀

侵蚀消除了前景对象的边界。与 2D 卷积类似,核在图像 A 上滑动。如果核下的所有像素均为 1,则保留原始图像中的像素。

否则,它被设为 0,从而导致腐蚀。边界附近的所有像素都被丢弃。此过程对于消除白噪声很有用。

OpenCV 中erode()函数的命令如下 -

cv.erode(src, kernel, dst, anchor, iterations)

参数

OpenCV 中的 erode() 函数使用以下参数-

src 和 dst 参数是相同大小的输入和输出图像数组。内核是用于侵蚀的结构元素的矩阵。例如,3X3 或 5X5。

锚点参数默认为-1,这意味着锚点元素位于中心。迭代是指应用侵蚀的次数。

扩张

它与侵蚀正好相反。这里,如果内核下至少有一个像素为 1,则像素元素为 1。因此,它增加了图像中的白色区域。

dilate() 函数的命令如下 -

cv.dilate(src, kernel, dst, anchor, iterations)

参数

dilate ()函数具有与 erode() 函数相同的参数。这两个函数都可以有额外的可选参数,如 BorderType 和 borderValue。

BorderType 是图像边界的枚举类型(CONSTANT、REPLICATE、TRANSPERANT 等)

borderValue 用于边界恒定的情况。默认情况下,它是 0。

例子

下面给出了一个示例程序,显示了 erode() 和 dilate() 函数的使用 -

import cv2 as cv
import numpy as np
img = cv.imread('LinuxLogo.jpg',0)
kernel = np.ones((5,5),np.uint8)
erosion = cv.erode(img,kernel,iterations = 1)
dilation = cv.dilate(img,kernel,iterations = 1)
cv.imshow('Original', img)
cv.imshow('Erosion', erosion)
cv.imshow('Dialation', dilation)

输出

原始图像

形态学

侵蚀

侵蚀

扩张

扩张