Python-Opencv中高斯噪点和高斯模糊

Python-Opencv中高斯噪点和高斯模糊

1. 什么是高斯模糊

把要模糊的像素色值统计,用数学上加权平均的计算方法(高斯函数)得到色值,对范围、半径等进行模糊

2. 高斯模糊的应用场景

一些美颜软件、美颜相机上的磨皮和毛玻璃特效基本上都是用的高斯模糊,并且大部分图像处理软件中都有高斯模糊的操作,除此之外,高斯模糊还具有减少图像层次和深度的功能

注 以上内容来自:https://blog.csdn.net/gangzhucoll/article/details/78682492

import cv2 as cv
import numpy as np

# 定义一个各通道值 0-255范围 超出按截断处理
def ext(pv):
    if pv > 255:
        return 255
    if pv < 0:
        return 0
    else:
        return pv

# 高斯噪点的生成
def gauss_noise(image):
    h, w, ch = image.shape
    for row in range(h):
        for col in range(w):
        
        	# numpy.random.normal(loc, scale, size)生成高斯分布的概率密度随机数
        	# loc:float代表生成的高斯分布的随机数的均值
        	# scale:float 代表这个分布的方差
        	# size:int or tuple of ints 输出的shape,默认为None,只输出一个值 
        	# 当指定整数时,输出整数个值,也可以输出(a, b)→ a 行 b 列
            s = np.random.normal(0, 10, 3)
            # 去除每一个像素的三个通道值
            b = image[row, col, 0]
            g = image[row, col, 1]
            r = image[row, col, 2]
            # 在每一个像素的三个通道值上加上高斯噪声
            image[row, col, 0] = ext(b + s[0])
            image[row, col, 1] = ext(g + s[1])
            image[row, col, 2] = ext(r + s[2])
    cv.imshow("gauss_noise", image)


girl = cv.imread("girl.jpg")
cv.imshow("girl", girl)
t1 = cv.getTickCount()
gauss_noise(girl)
# cv.GaussianBlur(girl,(0,0),0.9) size和sigma只需要确定一个值就可以
gauss_blur = cv.GaussianBlur(girl,(0,0),0.9)
cv.imshow("gauss_blur", gauss_blur)
t2 =cv.getTickCount()
t = ((t2 - t1)/cv.getTickFrequency())*1000
print(t)
cv.waitKey(0)
cv.destroyAllWindows()

Python-Opencv中高斯噪点和高斯模糊_第1张图片

初学Opencv,如有错误地方和改进地方,真诚地邀请您提出来,谢谢!

本文结束…

你可能感兴趣的:(Python-Opencv中高斯噪点和高斯模糊)