Python+OpenCV图像处理(第3课---图像平滑处理)

均值滤波

blur()

根据核的大小(rowcol),每个像素值就等于以此像素为中心的周围rowcol个像素的平均值。核大一点,显然越平滑、模糊。
在这里插入图片描述

# -*- coding: utf-8 -*-

import cv2

img = cv2.imread("C:\\imgs\\lenacolor.png", cv2.IMREAD_UNCHANGED)

result = cv2.blur(img, (15, 15))

cv2.imshow("img", img)
cv2.imshow("result", result)
cv2.waitKey()
cv2.destroyAllWindows()

在这里插入图片描述

# -*- coding: utf-8 -*-

import cv2

img = cv2.imread("C:\\imgs\\lenaNoise.png", cv2.IMREAD_UNCHANGED)

result = cv2.blur(img, (7, 7))

cv2.imshow("img", img)
cv2.imshow("result", result)
cv2.waitKey()
cv2.destroyAllWindows()

在这里插入图片描述

方框滤波

boxFilter()

normalize=true的时候,效果同均值滤波;normalize=false的时候,α=1,仅求和。
在这里插入图片描述

# -*- coding: utf-8 -*-

import cv2

img = cv2.imread("C:\\imgs\\lenaNoise.png", cv2.IMREAD_UNCHANGED)

result1 = cv2.boxFilter(img, -1, (3,3), normalize=0)
result2 = cv2.boxFilter(img, -1, (6,6), normalize=1)

cv2.imshow("img", img)
cv2.imshow("result1", result1)
cv2.imshow("result2", result2)

cv2.waitKey()
cv2.destroyAllWindows()

在这里插入图片描述

高斯滤波

GaussianBlur()

与均值滤波对比,其实还是利用周围的元素,不过周围每个元素的权重不同。核宽度和高度必须是奇数。
在这里插入图片描述

# -*- coding: utf-8 -*-

import cv2

img = cv2.imread("C:\\imgs\\lenaNoise.png", cv2.IMREAD_UNCHANGED)

result = cv2.GaussianBlur(img, (15, 15), 0)

cv2.imshow("img", img)
cv2.imshow("result", result)

cv2.waitKey()
cv2.destroyAllWindows()

在这里插入图片描述

中值滤波

medianBlur()
依据核大小,选取以某个像素为中心的那些像素的中位数作为本像素的值。本滤波,核宽度核高度是相同的,只需要指明边长。

# -*- coding: utf-8 -*-

import cv2

img = cv2.imread("C:\\imgs\\lenaNoise.png", cv2.IMREAD_UNCHANGED)

result = cv2.medianBlur(img, 3)

cv2.imshow("img", img)
cv2.imshow("result", result)

cv2.waitKey()
cv2.destroyAllWindows()

去椒盐效果确实比以上几个滤波都好。。。
在这里插入图片描述

特别说明

本文参考网易云课堂《Python+OpenCV图像处理》

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值