Python-OpenCV 图像处理(七):高斯模糊

import cv2
import numpy as np

__author__ = "zxsuperstar"
__email__ = "zxsuperstar@163.com"

"""
高斯模糊/噪声
轮廓还在,保留图像的主要特征
高斯模糊比均值模糊去噪效果好
"""
def clamp(pv):
    if pv > 255:
        return 255
    if pv < 0:
        return 0
    else:
        return pv


def gaussion_noise(image):
    h,w,c = image.shape
    for row in range(h):
        for col in range(w):
            s = np.random.normal(0,20,3)
            b = image[row,col,0]
            g = image[row, col, 1]
            r = image[row, col, 2]
            image[row, col, 0] = clamp(b + s[0])
            image[row, col, 1] = clamp(b + s[1])
            image[row, col, 2] = clamp(b + s[2])
    cv2.imshow("noise image",image)


if __name__ == "__main__":
    src = cv2.imread("t.jpg") #blue green red
    cv2.namedWindow("image", cv2.WINDOW_AUTOSIZE)
    cv2.imshow("image",src)

    gaussion_noise(src)
    gaussian = cv2.GaussianBlur(src,(5,5),0) #高斯模糊
    cv2.imshow("gaussian",gaussian)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

高斯模糊GaussianBlur函数原型:GaussianBlur(src, ksize, sigmaX[, dst[, sigmaY[, borderType]]]) -> dst

src参数表示待处理的输入图像。

ksize参数表示高斯滤波器模板大小。 ksize.width和ksize.height可以不同,但它们都必须是正数和奇数。或者,它们可以是零,即(0, 0),然后从σ计算出来。

sigmaX参数表示 X方向上的高斯内核标准差。

sigmaY参数表示 Y方向上的高斯内核标准差。 如果sigmaY为零,则设置为等于sigmaX,如果两个sigma均为零,则分别从ksize.width和ksize.height计算得到。

补:若ksize不为(0, 0),则按照ksize计算,后面的sigmaX没有意义。若ksize为(0, 0),则根据后面的sigmaX计算ksize

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值