import cv2 as cv
import numpy as np
def clamp(pv):
if pv>255:
return 255
if pv<0:
return 0
else:
return pv
def gaussian_noise(image):
h,w,c=image.shape
for row in range(h):
for col in range(w):
#loc概率分布的均值,对应着整个分布的中心center
#scale概率分布的标准差,对应于分布的宽度,scale越大越矮胖,scale越小,越瘦高
#size 输出的shape,默认为None,只输出一个值
#这里是输出3个
s=np.random.normal(loc=0,scale=20,size=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(g+s[1])
image[row,col,2]=clamp(r+s[2])
cv.imshow("noise image",image)
src=cv.imread("D:/2018-07-31 101509.jpg")
cv.namedWindow("input image",cv.WINDOW_AUTOSIZE)
cv.imshow("source image",src)
gaussian_noise(src)#高斯
cv.waitKey(0)
cv.destroyAllWindows()
原图效果
高斯效果图