# -*- coding: utf-8 -*-
# 图像滤波
'''
图像处理也支持低通滤波(LPF)和高通滤波(HPF)处理
OpenCV提供filter2D函数对图像进行滤波处理
'''
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
# 读取图像
img = cv.imread('../../../datas/images/fish.jpg')
# 滤波Kernel,求平均值
kernel = np.ones((5,5),np.float32) / 25
# 均值滤波
# 执行滤波处理,图像将变得模糊
dst = cv.filter2D(img,-1,kernel)
# dist = cv.blur(img,(5,5))
# # 显示结果
# plt.subplot(121)
# plt.imshow(img)
# plt.title('Original')
# plt.xticks([])
# plt.yticks([])
# plt.subplot(122)
# plt.imshow(dst)
# plt.title('Averaging')
# plt.xticks([])
# plt.yticks([])
#plt.show()
cv.imshow("image",img)
cv.imshow("Filter-Avg",dst)
# 高斯滤波
dst = cv.GaussianBlur(img,(5,5),0)
cv.imshow("Gaussian Blur",dst)
# 中值滤波
dst = cv.medianBlur(img,5)
cv.imshow("Median Blur",dst)
# 双边滤波,可以用来做一些简单的美颜处理
dst = cv.bilateralFilter(img,9,75,75)
cv.imshow("Bilateral Filter",dst)
cv.waitKey()
cv.destroyAllWindows()