OpenCV Python - 形态学变换



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

腐蚀

腐蚀去除前景对象的边界。类似于二维卷积,一个核在图像 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)

输出

原始图像

Morphological

腐蚀

Erosion

膨胀

Dilation
广告