Python-Opencv中的模糊处理

Python-Opencv中的模糊处理

模糊处理原理

基于离散卷积、定义好每个卷积核、不同卷积核得到不同的卷积效果、模糊是卷积的一种表象

模糊方式:

  1. 均值模糊:一般用来处理图像的随机噪声
  2. 中值模糊:一般用来处理图像的椒盐噪声
  3. 自定义模糊:对图像进行锐化之类的操作

1. 均值模糊
一般用来处理图像的随机噪声

import cv2 as cv

def mean_blur(image, a, b):
	# (a,b)表示的卷积核[大小]  a代表横向上的模糊,b表示纵向上的模糊
	dst = cv.blur(image, (a, b))
    cv.imshow("mean_blur", dst)


girl = cv.imread("gilr.jpg")
mean_blur(girl, 10, 1)
mean_blur(girl, 1, 10)
mean_blur(girl, 5, 5)
cv.waitKey(0)
cv.destroyAllWindows()

Python-Opencv中的模糊处理_第1张图片

2. 中值模糊
一般用来处理图像的椒盐噪声

import cv2 as cv

def median_blur(image):
	# 第二个参数是孔径的尺寸,一个大于1的奇数。
    # 比如这里是5,中值滤波器就会使用5×5的范围来计算。
    # 即对像素的中心值及其5×5邻域组成了一个数值集,对其进行处理计算,当前像素被其中值替换掉。
    dst = cv.medianBlur(image, 5)
    cv.imshow("median_blur", dst)

src = cv.imread("zaodian.jpg")
cv.imshow("zaodian", src)
cv.waitKey(0)
cv.destroyAllWindows()

Python-Opencv中的模糊处理_第2张图片
上左图明显带有很有椒盐噪点,右图模糊了很多

3. 自定义模糊
自定义卷积核对图像进行锐化之类的操作

import cv2 as cv

def custom_blur_demo(image):
	# 当kernel总和为1时:增强锐化
	# 当kernel总和为0时:边缘梯度
    kernel = np.array([[0,-1,0],[-1,5,-1],[0,-1,0]], np.float32)
    dst = cv.filter2D(image, -1, kernel=kernel)
    cv.imshow("custom_blur_demo", dst)


girl = cv.imread("girl.jpg")
cv.imshow("girl", girl)
custom_blur_demo(girl)
cv.waitKey(0)
cv.destroyAllWindows()

Python-Opencv中的模糊处理_第3张图片
注:部分内容参考自 https://blog.csdn.net/gangzhucoll/article/details/78660422

初学Opencv,如有错误地方和改进地方,真诚地邀请您提出来,谢谢!

本文结束…

你可能感兴趣的:(Python-Opencv中的模糊处理)