平滑处理
所谓平滑处理,就是利用一系列滤波操作对二值图像进行滤波处理,得到不同结果的图像
首先要导入的包
import cv2
import matplotlib.pyplot as plt
import numpy as np
(个人理解:滤波操作和深度学习卷积差不多,都是对应点相乘再相加)
- 均值滤波:cv2.blur,去掉噪音点
- 方框滤波:cv2.boxFilter,和均值滤波一样,要选择归一化,否则容易越界
- 高斯滤波:cv2.GaussianBlur,比较常见,对中心值比较敏感
- 中值滤波:cv2.medianBlur
上代码:
img=cv2.imread('p1.jpg')#.jpg表示图片格式,其他有些格式也可以这里放入图片的绝对路径
cv2.imshow('im2', img)
#均值滤波.去掉噪音点,简单平均卷积操作
blur=cv2.blur(img,(3,3))
cv2.imshow('blur',blur)
#方框滤波,和均值滤波一样,可以选择归一化
box=cv2.boxFilter(img,-1,(3,3), normalize=True)
box2=cv2.boxFilter(img,-1,(3,3), normalize=False)#不归一化,容易越界
cv2.imshow('box',box)
cv2.imshow('box2',box2)
#高斯滤波,模糊的卷积核数值是否满足高斯分布,相当于更重视中间的
gaussian=cv2.GaussianBlur(img,(5,5),1)
cv2.imshow('gaussian',gaussian)
#中值滤波,用中值代替
median=cv2.medianBlur(img,5)
cv2.imshow('median',median)
#展示所有的
res=np.hstack((blur,gaussian,median))
print(res)
cv2.imshow("median vs average",res)
cv2.waitKey(0) # 等待时间,毫秒版。0表示任意键终止
cv2.destroyWindow()
上原图
关于读取的原图片,本人是直接放到和.py文件同一个路径的,也可以直接复制绝对路径,到图片–>>右击–>>属性找到得到最后结果,像这样,原图的绝对路径就是’E:\open‘
那么读取代码就是
img=cv2.imread('E:\open\p1.jpg')