GaussianBlur函数用于对图像进行高斯模糊,主要用于平滑图像、去除噪声和细节。通过应用高斯滤波,图像中的边缘和细节会被柔化,适合在边缘检测和图像预处理等场景中使用。
1 | cv2.GaussianBlur(src, ksize, sigmaX, sigmaY=0, borderType=cv2.BORDER_DEFAULT) |
参数名 |
描述 |
取值范围 |
输入/输出 |
---|---|---|---|
src |
输入图像。 |
非空 |
输入 |
ksize |
高斯核的大小,必须是正奇数,如(3, 3)或(5, 5)。 |
(width, height),其中width和height均为大于1的奇数 |
输入 |
sigmaX |
X方向的高斯标准差,控制模糊程度。 |
(0, inf) |
输入 |
sigmaY |
Y方向的高斯标准差,默认为0(自动计算与sigmaX相同)。 |
(0, inf) |
输入 |
borderType |
边界模式,默认为cv2.BORDER_DEFAULT,用于处理边界像素。 |
cv2.BORDER_DEFAULT、cv2.BORDER_REPLICATE、cv2.BORDER_REFLECT、cv2.BORDER_REFLECT_101、cv2.BORDER_WRAP、cv2.BORDER_CONSTANT等 |
输入 |
错误码 |
描述 |
---|---|
INVALID_PARAM_MSG |
参数“src”存在空指针。 |
NOT_SUPPORT_MSG |
不是“borderType”支持的模式,ksize尺寸不对,src不是unit8图像。 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 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) # 定义高斯模糊核的大小 ksize = (3, 3) # 定义高斯模糊核的标准差 sigmaX = 1 sigmaY = 1 dst = cv2.GaussianBlur(src, ksize, sigmaX, sigmaY, borderType=cv2.BORDER_DEFAULT) print(dst) |
运行结果:
1 2 3 4 5 | [[0 0 1 0 0] [0 0 1 0 0] [1 1 1 1 1] [0 0 1 0 0] [0 0 1 0 0]] |