openCV简要-02 阈值与平滑处理

1.阈值处理

ret,det=cv2.threshold(src,thresh,maxval,type)
#threshold函数原型:
#det为输出图
#src为输入图,thresh为设置的阈值,maxval表示矩阵中每个分量的最大值
#type表示阈值处理类型
#cv2.THRESH_BINARY 超过阈值部分取maxval,否则取0
#cv2.THRESH_BINARY_INV 与BINARY相反
#cv2.THRESH_TRUNC 大于阈值部分设置为阈值,否则不变(截断)
#cv2.THRESH_TOZERO 大于阈值部分不变,否则为0
#cv2.THRESH_TOZERO_INV 与前者相反

ret,thresh1=cv2.threshold(img,127,255,cv2.THRESH_BINARY)
ret,thresh2=cv2.threshold(img,127,255,cv2.THRESH_BINARY_INV)
ret,thresh3=cv2.threshold(img,127,255,cv2.THRESH_TRUNC)
ret,thresh4=cv2.threshold(img,127,255,cv2.THRESH_TOZERO)
ret,thresh5=cv2.thrreshold(img,127,255,cv2.THRESH_TOZERO_INV)

title=['1','2','3','4','5','6']
images=[img,thresh1,...,thresh5]

import matplotlib as plt
for i in range(6):
	plt.subplot(2,3,i+1),plt.imshow(images[i],'gray')
	plt.title(title[i])
	plt.xticks([]),plt.yticks([])
plt.show()

2.平滑处理
滤波目的:对图像进行滤波操作以降低图像中的椒盐噪声
矩阵卷积的计算过程:由此进入 @寰宇的行者 原创

import cv2
import numpy as np

#线性滤波:通过与卷积和的线性

#1.均值滤波
blur=cv2.blur(img,(3,3))
#用3*3的卷积核对img求卷积(BGR全部)
#一般情况下,卷积核行数或列数取奇数
cv2.imshow('blur',blur)
cv2.waitKey(0)
cv2.destroyAllWindow()
#均值滤波:在卷积核范围内的元素求均值(卷积核可以有不同位置的权值,这里全部为1)

#2.方框滤波
#1)归一化的(等效于均值滤波)
box=cv2.boxFilter(img,-1,(3,3),normalize=True)
#2)不归一化的(不求平均值,只计算和,最终结果=min(255,和))
box=cv2.boxFilter(img,-1,(5,5),normalize=False)

#3.高斯滤波
#根据其他元素到中心的距离远近,卷积核的权值满足高斯分布,以这个卷积核进行卷积运算
Gaussian=cv2.GaussianBlur(img,(5,5),1)
#GaussianBlur原型:GaussianBlur(src,卷积核,x轴标准偏差,y轴标准偏差)

#4.中值滤波
#把卷积核盖住的范围内所有的元素的中位数作为中心元素
median=cv2.medianBlur(img,5)

#展示所有结果
res=np.hstack((blur,Gaussian,median))
#还有vstack,是将结果栈垂直存储
#可以打印出矩阵
print(res)
cv2.imshow('res',res)
cv2.waitKey(0)
cv2.destroyAllWindow()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值