Opencv第七章 新手入门之图像处理之平滑处理--滤波

用Opencv进行滤波操作,通用的有四种滤波方法:

均值滤波

均值滤波,及简单的平均卷积操作

blur = cv2.blur(img,(3,3))

cv2.imshow('blur',blur)
cv2.waitKey(0)
cv2.destroyAllWindows()

方框滤波

基本和均值滤波相同,只是可以选择是否进行归一化

若选择进行归一化,则选取像素点周围九宫格等权重相加除以九,代码及:

box = cv2.boxFilter(img,-1,(3,3),normalize=True)

cv2.imshow('blur',blur)
cv2.waitKey(0)
cv2.destroyAllWindows()

若不进行归一化,则选取像素点周围九宫格进行等权相加即可,但是由此会产生越界现象,故当相加超过255时,色素点统统标注为255,即显示为白色。

box = cv2.boxFilter(img,-1,(3,3),normalize=False)

cv2.imshow('box',box)
cv2.waitKey(0)
cv2.destroyAllWindows()

(3,3)的意思是在周围取3*3的九宫格,也可以写作(5,5),及取周围的5*5的二十五宫格。

这种提取方式存在潜在的规则是,只取奇数个,一般情况下不去偶数个。

高斯滤波

aussian=cv2.GaussianBlur(img,(5,5),1)

cv2.imshow('aussian',aussian)
cv2.waitKey(0)
cv2.destroyAllWindows()

中值滤波

取周围指定宫格的像素进行从小到大的依次排列,赋予选取像素点该排列中当作中值的数据。

median=cv2.medianBlur(img,5)

cv2.imshow('median',median)
cv2.waitKey(0)
cv2.destroyAllWindows()

(img,5)中的5的意思是取指定像素点周围的五宫格。

下面利用一个拼接函数,将它们输出的图像拼接在一起得

res = np.vstack((img,blur,box,box1,aussian,median))
print(res)
cv2.imshow('median vs average',res)
cv2.waitKey(0)
cv2.destroyAllWindows()

大家可以观察一下集中滤波之间的区别,还是较为明显的。 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值