动态二维码中值滤波处理_opencv(二)之图像阈值与平滑处理

3ab23efd85cb8c3531ee49603f6a1617.png

接着上一次的文章:

social:opencv-python库基础操作(一)​zhuanlan.zhihu.com
0d2678cf456917602b36ed1c61d50a94.png

还是用这只猫咪:

a07abb989a8097bf51d2b5409f5aca32.png


进行灰度处理有利于后续操作:

img_gray = cv2.imread("cat.jpg", cv2.IMREAD_GRAYSCALE)

2ca0006214d9c36618ed58c39908024e.png

4915b2fad7fab82238cf88022f9fa79b.png

1.最简单的阈值处理

#超过阈值(127)部分,取maxval(255,白色),否则取0(黑色)
ret , thresh1  = cv2.threshold(img_gray, 127 ,255, cv2.THRESH_BINARY)

b30ee974b33621d44b2891c46b52e662.png

2.最简单的阈值处理de反转

#为第一种情况的反转

res , thresh2= cv2.threshold(img_gray, 127 ,255, cv2.THRESH_BINARY_INV)

3aeb07e8fd9b0a346e301ec40563daf7.png

3.截断处理(to_阈值)

#大于阈值部分设置为阈值,否则不变
res,  thresh3 = cv2.threshold(img_gray , 127, 255, cv2.THRESH_TRUNC)

10ade10c020e1f87d3fd9f96c6f8989c.png

4.截断处理(to_zero)

#超过阈值部分不改变,否则为0
res  , thresh4 = cv2.threshold(img_gray , 127, 255 , cv2.THRESH_TOZERO)
cv_show("thresh4",thresh4)

8530972b0ee595360725625c930f9fbc.png

5.截断处理的反转(to_zero)

#第四种情况的反转
res  , thresh5 = cv2.threshold(img_gray , 127, 255 ,cv2.THRESH_TOZERO_INV)
cv_show("thresh5",thresh5)

4e518db56a780d73b618886c196bba1b.png


接下来介绍,# 图像平滑处理(各种滤波操作)

import cv2
img = cv2.imread("cat.jpg")

1.均值滤波

#简单的平均卷积操作

blur = cv2.blur(img,(3,3))
cv2.imshow("img2", blur)
cv2.waitKey(0)
cv2.destroyAllWindows()

2ed61e0a1de54367640acd92e451dcc8.png

2.方框滤波

#基本和均值一样,可以选择归一化

box = cv2.boxFilter(img ,  -1 , (3,3) , normalize = True)
cv2.imshow("img3",box)
cv2.waitKey(0)
cv2.destroyAllWindows()

aa0fadd94508ec8b2e8f3868767e386b.png
box = cv2.boxFilter(img ,  -1 , (3,3) , normalize = False)
cv2.imshow("img3",box)
cv2.waitKey(0)
cv2.destroyAllWindows()
#若越界,会直接取255

42aa6470aa7b937c3e1cc3e4a6a17a07.png

3.高斯滤波

#高斯滤波
#卷积核里的数值是满足高斯分布的,相当于更加重视中间
aussian = cv2.GaussianBlur(img_cat,(3,3) , 1)

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

87043c21f80f0d39382b4395ca73ab86.png

4.中值滤波

#该方法对“噪音点”处理效果较好
#中值滤波
#相当于用中值代替

median = cv2.medianBlur(img, 5 )
cv2.imshow("median" , median)
cv2.waitKey(0)
cv2.destroyAllWindows()

a545bb4f2d6ff6c7f54a3857ff8be510.png

5.展示所有的

import numpy as np
res =  np.hstack((blur, aussian, median)) #这里是横着展示的
#也可以选择竖着展示
cv2.imshow("blur, aussian, median" , res)
cv2.waitKey(0)
cv2.destroyAllWindows()
(太长了,就不展示出来了)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值