python中opencv给图片加入高斯噪声
时间: 2023-11-09 08:03:28 浏览: 56
以下是使用Python中OpenCV给图片加入高斯噪声的示例代码:
``` python
import cv2
import numpy as np
# 加载图片
img = cv2.imread('image.jpg')
# 获取图片的高度和宽度
height, width = img.shape[:2]
# 创建一个与原图像大小相同的矩阵
noise = np.zeros((height, width, 3), np.uint8)
# 生成高斯噪声
cv2.randn(noise, 0, 50)
# 将高斯噪声添加到原图像中
img_noise = cv2.add(img, noise)
# 显示原图像和加入噪声后的图像
cv2.imshow('Original Image', img)
cv2.imshow('Image with Gaussian Noise', img_noise)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
这段代码首先加载一张图片,然后创建一个与原图像大小相同的矩阵用于生成高斯噪声。使用`cv2.randn()`函数生成高斯噪声,第一个参数为噪声矩阵,第二个参数为平均值,第三个参数为标准差。最后,将高斯噪声添加到原图像中,并显示原图像和加入噪声后的图像。
相关问题
python-opencv 高斯噪声和椒盐噪声
高斯噪声和椒盐噪声是数字图像处理中常见的两种噪声形式。下面是使用python-opencv库生成高斯噪声和椒盐噪声的示例代码:
## 生成高斯噪声
import numpy as np
import cv2
# 读取原始图像
img = cv2.imread('lena.jpg')
# 生成高斯噪声
mean = 0
var = 0.1
sigma = var ** 0.5
gaussian = np.random.normal(mean, sigma, img.shape)
gaussian = gaussian.reshape(img.shape).astype(np.float32)
noisy_image = img + gaussian
# 显示原始图像和加噪后的图像
cv2.imshow('Original', img)
cv2.imshow('Gaussian Noise', noisy_image.astype(np.uint8))
cv2.waitKey(0)
cv2.destroyAllWindows()
## 生成椒盐噪声
import numpy as np
import cv2
# 读取原始图像
img = cv2.imread('lena.jpg')
# 生成椒盐噪声
s_vs_p = 0.5
amount = 0.004
noisy_image = np.copy(img)
# Salt mode
num_salt = np.ceil(amount * img.size * s_vs_p)
coords = [np.random.randint(0, i - 1, int(num_salt)) for i in img.shape]
noisy_image[coords] = 255
# Pepper mode
num_pepper = np.ceil(amount * img.size * (1. - s_vs_p))
coords = [np.random.randint(0, i - 1, int(num_pepper)) for i in img.shape]
noisy_image[coords] = 0
# 显示原始图像和加噪后的图像
cv2.imshow('Original', img)
cv2.imshow('Salt and Pepper Noise', noisy_image.astype(np.uint8))
cv2.waitKey(0)
cv2.destroyAllWindows()
python实现给文件夹下图片加入高斯噪声并批量保存
使用Python实现给文件夹下的图片添加高斯噪声并批量保存可以按照以下步骤进行:
首先,需要导入所需的库:OpenCV用于图像处理和保存,os用于文件夹操作,numpy用于生成高斯噪声。
```python
import cv2
import os
import numpy as np
```
然后,定义一个函数用于给单个图片添加高斯噪声:
```python
def add_gaussian_noise(image, mean=0, std=25):
noise = np.random.normal(mean, std, image.shape).astype(np.uint8)
noisy_image = cv2.add(image, noise)
return noisy_image
```
接下来,遍历指定文件夹下的所有图片文件,并使用上述定义的函数添加高斯噪声,并保存到新的文件夹中:
```python
source_folder = "input_folder"
target_folder = "output_folder"
if not os.path.exists(target_folder):
os.makedirs(target_folder)
for filename in os.listdir(source_folder):
img_path = os.path.join(source_folder, filename)
img = cv2.imread(img_path)
noisy_img = add_gaussian_noise(img)
target_path = os.path.join(target_folder, filename)
cv2.imwrite(target_path, noisy_img)
```
其中,input_folder是原始图片所在的文件夹,output_folder是保存添加噪声后的图片的文件夹。
最后,运行程序即可自动批量给文件夹下的图片添加高斯噪声并保存到指定文件夹中。