dilate

函数功能

dilate函数用于对图像进行膨胀操作,在图像处理和计算机视觉中广泛应用于特征增强和形状分析。膨胀是形态学操作的一种,它可以增强图像中的高亮区域,通常用于去除小的噪声、填充物体的孔洞或连接相邻的物体。膨胀操作通过使用结构元素(卷积核)来扩展图像中亮区域的边界。

函数接口

1
cv2.dilate(src, kernel, anchor=None, iterations=1, borderType=cv2.BORDER_CONSTANT, borderValue=None)

参数

参数名

描述

取值范围

输入/输出

src

输入图像(通常是二值图像或灰度图像)。

非空

输入

kernel

结构元素,用于膨胀操作,通常为一个矩阵。

非空

输入

anchor

锚点位置,默认为None,表示结构元素的中心。

tuple类型,格式为 (x, y)

x:水平偏移量,范围 [0, kernel_width-1]

y:垂直偏移量,范围 [0, kernel_height-1]

kernel_width和kernel_height由kernel参数决定

输入

iterations

膨胀操作的次数,默认为1。增加此值将进一步扩展图像。

非负整数(通常为1或更高)

输入

borderType

边界模式,默认为cv2.BORDER_CONSTANT。可以选择不同的边界处理方式,KPCV只支持

BORDER_CONSTANT处理方式

取值为cv2.BORDER_* 常量,如cv2.BORDER_CONSTANT、cv2.BORDER_REPLICATE、cv2.BORDER_REFLECT等

输入

borderValue

边界填充的常数值,通常为0,但可以指定为其他值,只有在borderType为BORDER_CONSTANT时有效。

可以是任何float或int数字,默认是0

输入

返回值

错误码

错误码

描述

INVALID_PARAM_MSG

参数“src”存在空指针。

NOT_SUPPORT_MSG

src不是3通道的uint8类型图像,输入的图像错误或不是“borderType”支持的模式或“kernel”输入错误。

示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
import numpy as np 
import cv2
# 创建一个5x5的简单图像 
src = np.array([[0, 0, 0, 0, 0],
                [0, 1, 1, 1, 0],
                [0, 1, 0, 1, 0],
                [0, 1, 1, 1, 0],
                [0, 0, 0, 0, 0]], dtype=np.uint8)
#膨胀操作的核
kernel = np.ones((3, 3), np.uint8) 
dst = cv2.dilate(src, kernel, iterations=1)

print(dst)

运行结果:

1
2
3
4
5
[[1 1 1 1 1]
 [1 1 1 1 1]
 [1 1 1 1 1]
 [1 1 1 1 1]
 [1 1 1 1 1]]