OpenCV Python 形态变换
基于图像形状的简单操作被称为形态变换。最常见的两种变换是 腐蚀和膨胀 。
腐蚀
腐蚀消除了前景对象的边界。类似于2D卷积,一个核在图像A上滑动。如果核下的所有像素都是1,则原始图像中的像素保持不变。
否则,它被设为0,因此导致腐蚀。靠近边界的所有像素都被丢弃。这个过程用于去除白色噪声。
OpenCV中 erode() 函数的命令如下:
cv.erode(src, kernel, dst, anchor, iterations)
参数
OpenCV中的 erode() 函数使用以下参数:
src和dst参数是相同大小的输入和输出图像数组。Kernel是用于侵蚀的结构元素矩阵。例如,3X3或5X5。
anchor参数默认为-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)
输出
原始图片
侵蚀
扩张