笔记和用法都在代码注释中:
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
img = cv.imread('666.jpg')
img = cv.resize(img,(500,230))
#图像的像素点有问题,需要做平滑处理
'''
#-------------第一种方法: 均值滤波 (用法一:打马赛克【手动狗头】)(用法二:)
img = cv.blur(img,(3,3)) #设置矩阵大小,越大越模糊,越小越越没有效果!
cv.imshow('img',img)
cv.waitKey(0) #(用法一:打马赛克【手动狗头】)
cv.destroyAllWindows() #(用法二:减小干扰点)
'''
'''
#-------------第二种方法: 方框滤波 (对 噪音点的消除 比 均值滤波好 !!! )
img = cv.boxFilter(img,-1,(3,3),normalize = True) #如果改为False,超过255的,则为255
cv.imshow('666',img)
cv.waitKey(0)
cv.destroyAllWindows()
'''
'''
#-------------第三种方法: 高斯滤波 [根据远近,自己进行权重运算] [效果也一般]
gaosi = cv.GaussianBlur(img,(5,5),1)
cv.imshow('gaosi',gaosi)
cv.waitKey(0)
cv.destroyAllWindows()
'''
'''
#-------------第四种方法: 中值滤波 [效果最好] [但会有点模糊!]
zhi = cv.medianBlur(img,5)
cv.imshow('zhi',zhi)
cv.waitKey(0)
cv.destroyAllWindows()
'''
jun = cv.blur(img,(10,10)) #均值滤波
fang = cv.blur(img,(50,50)) #方框滤波
gaosi = cv.GaussianBlur(img,(5,5),1) #高斯滤波
zhi = cv.medianBlur(img,5) #中值滤波
img = np.vstack((jun,fang,gaosi,zhi)) #竖着排列多个图像
#img = np.hstack((jun,fang,gaosi,zhi)) #横着排列多个图像
cv.imshow('111',img)
cv.waitKey(0)
cv.destroyAllWindows()
总结:介绍了?四种滤波方式!!!其中有很多参数也可自行改变,
亲自体验,效果更佳哟!!!
|