Opencv Python 简明教程

OpenCV Python - Morphological Transformations

基于形状图像上的简单操作称为形态变换。最常见的两种转换是 erosion and dilation

Erosion

腐蚀会消除前景对象的边界。类似于 2D 卷积,内核滑过图像 A。如果内核下的所有像素均为 1,则保留原始图像中的像素。

否则将其变为 0,从而导致腐蚀。丢弃所有边界附近的像素。此过程对去除白噪声很有用。

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

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

Parameters

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

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

anchor 参数默认为 -1,这意味着锚元素位于中心。Iterations 指腐蚀应用的次数。

Dilation

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

dilate() 函数的命令如下 −

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

Parameters

dilate() 函数具有与 erode() 函数相同参数。这两个函数可以有 BorderType 和 borderValue 这两个其他可选参数。

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

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

Example

下面给出了一个示例程序显示 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)

Output

Original Image

morphological

Erosion

erosion

Dilation

dilation