python 讀取圖像 添加噪聲 並保存

import cv2
import numpy as np


# 添加高斯噪聲
def GaessNoisy(src, sigma):
    NoiseImg = src.copy()
    s = np.random.normal(0, 1, size=src.shape)*sigma
    NoiseImg = np.add(NoiseImg, s)
    NoiseImg.astype(dtype=np.uint8)
    return NoiseImg


def readImage2Data():
    img = cv2.imread('./VOC2012/2007_000027.jpg')
    # 添加高斯噪聲
    noisyImage = GaessNoisy(img, 20)
    # 添加椒鹽噪聲
    # noisyImage = SaltAndPepper(img, 0.2)
    img = img/255.0
    noisyImage = noisyImage/255.0
    cv2.imshow('i', img)
    cv2.imshow('img', noisyImage)
    cv2.waitKey()
    cv2.imwrite('./VOC2012/2007_000027_noisy.jpg', noisyImage*255, [int(cv2.IMWRITE_JPEG_QUALITY), 100])   # 保存圖片


if __name__ == '__main__':
    readImage2Data()

1.要注意把圖片文件放在當前的文件夾下。
2.此處的代碼是添加了20個高斯噪聲的情況。
3.添加椒鹽噪聲的代碼如下:

# 添加椒鹽噪聲
def SaltAndPepper(src, percetage):
    NoiseImg = src.copy()
    NoiseNum = int(percetage*src.shape[0]*src.shape[1])
    for i in range(NoiseNum):
        randX = np.random.random_integers(0, src.shape[0]-1)
        randY = np.random.random_integers(0, src.shape[1]-1)
        if np.random.random_integers(0, 1) == 0:
            NoiseImg[randX, randY] = 0
        else:
            NoiseImg[randX, randY] = 255
    return NoiseImg

4.關於高斯噪聲椒鹽噪聲
5.如果沒有cv2和numpy庫,需要下載,如果使用的Anaconda直接下載就可以了,如果是別的,搜一下下載的命令。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章