opencv_day08

#方框滤波
#有一个参数normalize,表示在进行滤波时是否进行归一化,为1表示要进行
#归一化处理,为0表示不需要,直接使用领域像素值的和即可
import cv2
img=cv2.imread('./image/zaosheng.png')
#默认情况下,normalize的值为1,效果与均值滤波一样
r=cv2.boxFilter(img,-1,(5,5))
cv2.imshow('original',img)
cv2.imshow('rst',r)
cv2.waitKey()
cv2.destroyWindow()

输出:
在这里插入图片描述

#针对噪声图像,在方框滤波函数cv2.boxFilter()内将参数normalize的值设置为0,显示滤波结果
import cv2
img=cv2.imread('./image/zaosheng.png')
#在本例中没有对图像进行归一化处理
#进行滤波时计算的是5*5的领域的像素值之和,图像的像素值基本都会超过当前像素值的最大值
r=cv2.boxFilter(img,-1,(5,5),normalize=0)
cv2.imshow('original',img)
cv2.imshow('rst',r)
cv2.waitKey()
cv2.destroyWindow()

输出:
在这里插入图片描述

#高斯滤波
#会将中心点的权重值加大,远离中心点的而权重值减小,在此基础上计算各个不同领域内像素值不同权#重值的和
import cv2
img=cv2.imread('./image/zaosheng.png')
r=cv2.boxFilter(img,-1,(2,2),normalize=0)
cv2.imshow('original',img)
cv2.imshow('rst',r)
cv2.waitKey()
cv2.destroyWindow()

输出:
在这里插入图片描述

#中值滤波,将领域内的像素值进行排序,然后取中间值,因为要排序,所以耗费时间比较长
import cv2
img=cv2.imread('./image/zaosheng.png')
r=cv2.medianBlur(img,3)
cv2.imshow('original',img)
cv2.imshow('rst',r)
cv2.waitKey()
cv2.destroyWindow()

输出:
在这里插入图片描述

#针对噪声图像,对其进行双边滤波
import cv2
img=cv2.imread('./image/zaosheng.png')
#第一个参数src,第二个d表示滤波时选取的空间距离参数,表示以当前像素点为中心的直径
#sigmaColor:滤波处理时选取的颜色差值范围
#sigmaSpace:坐标空间中的sigma值
r=cv2.bilateralFilter(img,25,100,100)
cv2.imshow('original',img)
cv2.imshow('rst',r)
cv2.waitKey()
cv2.destroyWindow()

输出:
在这里插入图片描述

#双边滤波的优势在于对边缘信息的处理
#分别使用高斯滤波以及双边滤波对图片进行处理
import cv2
img=cv2.imread('./image/BW.jpg')
r1=cv2.GaussianBlur(img,(5,5),0,0)
r2=cv2.bilateralFilter(img,55,100,100)
cv2.imshow('original',img)
cv2.imshow('r1',r1)
cv2.imshow('r2',r2)
cv2.waitKey()
cv2.destroyWindow()

输出:
在这里插入图片描述


#2D卷积
#允许用户使用自定义卷积
import cv2
import numpy as np
cov=np.ones((9,9),np.float32)/81
img=cv2.imread('./image/zaosheng.png')
r=cv2.filter2D(img,-1,cov)
cv2.imshow('original',img)
cv2.imshow('Guassian',r)
cv2.waitKey()
cv2.destroyWindow()

输出:
在这里插入图片描述

#使用数组演示腐蚀的基本原理
#只有当Kernel的中心点位于img中的img[2,1],img[2,2],img[2,3]
#处时,核才完全处于前景图像中.所以,在腐蚀结果图像中,只有这三个点的值为1,其余点的值皆为0
import cv2
import numpy as np
img=np.zeros((5,5),np.uint8)
img[1:4,1:4]=1
kernel=np.ones((3,1),np.uint8)
erison=cv2.erode(img,kernel)
print('img=\n',img)
print('kernel=\n',kernel)
print('erison=\n',erison)

输出:
img=
[[0 0 0 0 0]
[0 1 1 1 0]
[0 1 1 1 0]
[0 1 1 1 0]
[0 0 0 0 0]]
kernel=
[[1]
[1]
[1]]
erison=
[[0 0 0 0 0]
[0 0 0 0 0]
[0 1 1 1 0]
[0 0 0 0 0]
[0 0 0 0 0]]

#使用cv2.erode()完成图像腐蚀
#只有完全在前景图像内,才会实现赋值为1
import cv2
import numpy as np
o=cv2.imread('./image/erode.jpeg')
kernel=np.ones((5,5),np.uint8)
erosion=cv2.erode(o,kernel)
cv2.imshow('original',o)
cv2.imshow('erosion',erosion)
cv2.waitKey()
cv2.destroyWindow()

输出:
在这里插入图片描述

#调节函数cv2.erode()的参数,观察不同参数控制下的图像腐蚀效果
import cv2
import numpy as np
o=cv2.imread('./image/erode.jpg',-1)
kernel=np.ones((9,9),np.uint8)
#iterations是腐蚀操作迭代的次数,默认为1,表示只进行一次腐蚀操作
erision=cv2.erode(o,kernel,iterations=5)
cv2.imshow('original',o)
cv2.imshow('erosion',erision)
cv2.waitKey()
cv2.destroyWindow()

输出:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值