用opencv 对图片进行均值 滤波、高斯滤波、中值滤波以及使用flter2D (采用一个自定义的卷积核)滤波
时间: 2024-02-05 21:05:23 浏览: 98
OpenCV均值滤波对图像进行均值滤波,3_3矩阵,中间点为中心,九个点求平均数,赋予中间值,进行均值处理.zip
好的,以下是使用Python的OpenCV库对图片进行均值滤波、高斯滤波、中值滤波以及使用filter2D进行自定义卷积核滤波的代码示例:
```python
import cv2
import numpy as np
# 读取图片
img = cv2.imread('test.jpg')
# 均值滤波
blur = cv2.blur(img, (5, 5))
# 高斯滤波
gaussian = cv2.GaussianBlur(img, (5, 5), 0)
# 中值滤波
median = cv2.medianBlur(img, 5)
# 自定义卷积核滤波
kernel = np.array([[-1, -1, -1], [-1, 9, -1], [-1, -1, -1]])
custom = cv2.filter2D(img, -1, kernel)
# 显示原图和处理后的图像
cv2.imshow('Original', img)
cv2.imshow('Blur', blur)
cv2.imshow('Gaussian', gaussian)
cv2.imshow('Median', median)
cv2.imshow('Custom', custom)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在上述代码中,`cv2.blur()`函数表示均值滤波,第一个参数是需要处理的图片,第二个参数是卷积核的大小,这里是一个5x5的卷积核。`cv2.GaussianBlur()`函数表示高斯滤波,第一个参数和第二个参数与均值滤波相同,第三个参数是高斯核的标准差。`cv2.medianBlur()`函数表示中值滤波,第一个参数和第二个参数与均值滤波相同,第三个参数表示卷积核的大小。`cv2.filter2D()`函数表示自定义卷积核的滤波,第一个参数是待处理的图片,第二个参数是输出图像的深度,这里设为-1表示与原图像的深度相同,第三个参数是卷积核。
运行上述代码,即可得到原图和四种滤波后的效果图。
阅读全文