OpenCV Python - 形态转换
基于图像形状的简单操作被称为形态变换。 两种最常见的转换是侵蚀和膨胀。
侵蚀
侵蚀消除了前景对象的边界。 类似于二维卷积,一个核在图像A上滑动。如果核下的所有像素都为1,则原始图像中的像素将被保留。
如果为0,成为侵蚀。 所有靠近边界的像素都被丢弃。 此过程对于去除白噪声很有用。
OpenCV中erode()函数的命令如下 −
cv.erode(src, kernel, dst, anchor, iterations)
参数
OpenCV 中的erode() 函数使用以下参数 −
src 和 dst 参数是相同大小的输入和输出图像数组。 Kernel 是用于腐蚀的结构元素矩阵。 例如,3X3 或 5X5。
anchor 参数默认为-1,表示锚点元素在中心。 iterations(迭代)是指应用侵蚀的次数。
膨胀
它与侵蚀正好相反。 这里,一个像素元素为1,如果kernel下至少有一个像素为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)
输出
原始图片
侵蚀
膨胀