OpenCV写个Python代码对图片添加椒盐噪音和去除噪音,并给出代码解析
时间: 2024-09-27 10:08:42 浏览: 46
OpenCV是一个广泛用于计算机视觉和机器学习的开源库,它提供了一整套图像处理工具。下面是一个简单的Python示例,展示如何使用OpenCV添加椒盐噪声以及应用降噪滤波(这里使用了高斯滤波器去除噪声):
```python
import cv2
import numpy as np
# 加载图片
image = cv2.imread('input_image.jpg', cv2.IMREAD_GRAYSCALE)
# 添加椒盐噪声 (Salt and Pepper Noise)
salt_amount = 0.05 * image.max()
pepper_amount = 0.05 * image.max()
noisy_image = image.copy()
noisy_image[np.random.randint(0, high=256, size=image.shape) < salt_amount] = 255
noisy_image[np.random.randint(0, high=256, size=image.shape) > (256 - pepper_amount)] = 0
cv2.imshow("Noisy Image", noisy_image)
cv2.waitKey(0)
# 应用高斯滤波器去噪
blur_kernel_size = 5 # 可调整大小,值越大降噪效果越明显,可能会丢失一些细节
blurred_image = cv2.GaussianBlur(noisy_image, (blur_kernel_size, blur_kernel_size), 0)
cv2.imshow("De-noised Image", blurred_image)
cv2.waitKey(0)
# 保存去噪后的图片
cv2.imwrite('denoised_image.jpg', blurred_image)
# 代码解析:
# 1. 首先读取灰度图像,方便后续操作。
# 2. 使用np.random.randint创建随机数组,小于给定阈值的地方设置为最大像素值(255),大于阈值的地方设为最小像素值(0),模拟椒盐噪声。
# 3. 使用cv2.GaussianBlur函数对图像应用高斯滤波,通过传递的核大小和标准差来平滑图像并降低噪声。
# 4. 显示原始噪声图像和去噪后的图像。
# 5. 最后保存去噪后的图片。
阅读全文