有三种模糊:
均值模糊
中值模糊
自定义模糊
原理:
基于离散卷积
定义好每个卷积核
不同卷积核得到不同的卷积效果
模糊是卷积的一种表象
均值模糊
def blur_demo(image):
dst = cv.blur(image,(10,10))
cv.imshow("blur_demo",dst)
#均值模糊可以去除噪声,但是效果不太好
中值模糊
def median_blur_demo(image):
dst = cv.medianBlur(image,5)
cv.imshow("media_blur_demo",dst)
自定义模糊
def custom_blur_demo(image):
kernel = np.ones([5,5],np.float32)/25
# /25保 证不会溢出
dst = cv.filter2D(image,-1,kernel=kernel)
cv.imshow("custom_blur_demo",dst)
自定义可进行锐化:
def custom_blur_demo(image):
kernel = np.array([[0,-1,0],[-1,5,-1],[0,-1,1]], np.float32) / 9
dst = cv.filter2D(image,-1,kernel=kernel)
cv.imshow("custom_blur_demo",dst)
总code:
#coding:utf-8
#file: tutorial_05.py
#@author: young
#@contact: [email protected]
#@time: 2019/12/15 18:16
import cv2 as cv
import numpy as np
def blur_demo(image):
dst = cv.blur(image,(10,10))
cv.imshow("blur_demo",dst)
#均值模糊可以去除噪声
def median_blur_demo(image):
dst = cv.medianBlur(image,5)
cv.imshow("media_blur_demo",dst)
#中值模糊去噪(椒盐噪声)的效果比均值模糊好
#卷积核大小可以定义,内容不能更改
def custom_blur_demo(image):
# kernel = np.ones([5,5],np.float32)/25
kernel = np.array([[0,-1,0],[-1,5,-1],[0,-1,1]], np.float32) / 9
#保证不会溢出
dst = cv.filter2D(image,-1,kernel=kernel)
cv.imshow("custom_blur_demo",dst)
src1 = cv.imread("lena.jpg")
src2 = cv.imread("lenanoise.png")
cv.imshow("input images",src1)
# blur_demo(src1)
custom_blur_demo(src1)
# median_blur_demo(src2)
cv.waitKey(0)
cv.destroyAllWindows()