opnecv为图片增加噪声函数
时间: 2024-10-20 10:09:04 浏览: 14
opencv函数手册
OpenCV是一个开源的计算机视觉库,它提供了一系列的功能,包括图像处理和分析。对于给图片添加噪声,OpenCV并不直接内置一个名为`opnecv`的函数,但你可以通过其强大的图像操作功能来模拟噪声。实际上,你可以使用以下步骤来添加常见的噪声类型:
1. **高斯噪声**:可以创建一个随机的高斯分布数组,然后将其乘以图片的像素值并添加到原图上。例如,可以使用`cv2.randn()`函数加上适当的均值和标准差。
```python
import cv2
import numpy as np
img = cv2.imread('image.jpg')
noise = np.random.normal(0, 0.1, img.shape) # 创建高斯噪声
noisy_img = img + noise
```
2. **椒盐噪声**:可以随机选择像素点,将它们设置为最大值(白色)或最小值(黑色)。OpenCV没有直接的椒盐噪声函数,但可以用位运算实现。
```python
def salt_pepper_noise(image, prob):
height, width = image.shape[:2]
noisy = image.copy()
s_vs_p = 0.5 # 确定椒盐噪声的比例
amount = 0.004 * height * width * prob # 设置噪声数量
num_salt = np.ceil(amount * s_vs_p)
num_pepper = np.ceil(amount * (1.0 - s_vs_p))
coords = [np.random.randint(0, i - 1, int(num_salt)) for i in image.shape[:-1]]
coords += (np.random.randint(0, 2, len(coords)),) * 2
noisy[coords] = 0
coords = [np.random.randint(0, i - 1, int(num_pepper)) for i in image.shape[:-1]]
coords += (np.random.randint(0, 2, len(coords)),) * 2
noisy[coords] = 255
return noisy
salt_prob = 0.05
noisy_img = salt_pepper_noise(img, salt_prob)
```
3. **其他噪声类型**:OpenCV还有其他的滤波器如`cv2.GaussianBlur()`、`cv2.additiveGaussianNoise()`等可以用于模拟更复杂的噪声效果。
阅读全文