使用python opencv库4 读取一幅图像文件实现对其添加高斯噪声、椒盐噪声、泊松噪声、speckle噪声并显示添加噪声前后对比图像。
以下是使用Python OpenCV库实现添加不同噪声的代码:
import cv2
import numpy as np
# 读取图像文件
img = cv2.imread('lena.jpg')
# 添加高斯噪声
gaussian_noise = np.random.normal(0, 50, img.shape)
noisy_img = img + gaussian_noise
# 添加椒盐噪声
salt_pepper_noise = np.zeros(img.shape, np.uint8)
salt = 0.05
pepper = 0.05
salt_pepper_noise[np.where(np.random.random(img.shape[:2]) < salt)] = 255
salt_pepper_noise[np.where(np.random.random(img.shape[:2]) < pepper)] = 0
noisy_img = cv2.add(img, salt_pepper_noise)
# 添加泊松噪声
poisson_noise = np.random.poisson(img * 0.01) / 0.01
noisy_img = img + poisson_noise
# 添加speckle噪声
speckle_noise = np.random.normal(0, 0.1 * img, img.shape)
noisy_img = img + img * speckle_noise
# 显示添加噪声前后对比图像
cv2.imshow('Original Image', img)
cv2.imshow('Gaussian Noise', noisy_img)
cv2.waitKey(0)
在上述代码中,我们首先使用OpenCV库的cv2.imread()函数读取一幅图像文件。然后,我们分别实现添加高斯噪声、椒盐噪声、泊松噪声、speckle噪声,并将添加噪声后的图像保存在noisy_img变量中。
最后,我们使用cv2.imshow()函数显示原始图像和添加噪声后的图像,使用cv2.waitKey()函数等待按键输入,最后使用cv2.destroyAllWindows()函数关闭所有窗口。
注意,在添加椒盐噪声时,我们首先创建一个与原始图像大小相同的零矩阵,并根据给定的概率添加盐和胡椒噪声。然后,我们使用cv2.add()函数将噪声添加到原始图像中。
原文地址: https://www.cveoy.top/t/topic/b1lV 著作权归作者所有。请勿转载和采集!