import cv2
import numpy as np
img=cv2.imread('F:jiaoyan.jpg')
#均值滤波
blur=cv2.blur(img,(3,3))
cv2.imshow('blur',blur)
cv2.waitKey(0)
cv2.destroyWindow('blur')
#方框滤波
#normalize归一化处理
box1=cv2.boxFilter(img,-1,(3,3),normalize=True)
cv2.imshow('box1',box1)
cv2.waitKey(0)
cv2.destroyWindow('box1')
#方框滤波
#不归一化处理,容易过暴,越界值取255
box2=cv2.boxFilter(img,-1,(3,3),normalize=False)
cv2.imshow('box2',box2)
cv2.waitKey(0)
cv2.destroyWindow('box2')
#高斯滤波
#高斯滤波器的卷积核也满足高斯分布,相当于离中心越近,参考的比值就越大
aussian=cv2.GaussianBlur(img,(5,5),1)
cv2.imshow('aussian',aussian)
cv2.waitKey(0)
cv2.destroyWindow('aussian')
#中值滤波
#从高到低排列,取最中间的值
median=cv2.medianBlur(img,5)
cv2.imshow('median',median)
cv2.waitKey(0)
cv2.destroyWindow('median')
#展示所有的处理结果
#np.hstack将参数元组的元素数组按水平方向进行叠加
h1=np.hstack((blur,median))
h2=np.hstack((box1,aussian))
v=np.vstack((h1,h2))
cv2.imshow('fliter',v)
cv2.waitKey(0)
cv2.destroyWindow('filter')
最终运行结果如下:
左上到右下依次为:均值滤波,中值滤波,方框滤波,高斯滤波