模糊操作基本原理:
1、基于离散卷积
2、定义好每个卷积核
3、不同卷积核得到不同的卷积效果
4、模糊是卷积的一种表象
分别有:均值模糊、中值模糊、自定义模糊
from cv2 import cv2 as cv
import numpy as np
# 均值模糊 可以去噪
def blur_demo(image):
dst = cv.blur(image,(5,5)) # 水平和垂直方向进行操作 常用(5,,5)
cv.imshow("blur_demo",dst)
# 中值模糊 可以去噪 对于椒盐去噪效果比均值模糊好
def median_blur_demo(image):
dst = cv.medianBlur(image,5)
cv.imshow("median_blur_demo",dst)
# 自定义模糊
def custom_blur_demo(image):
# kernel = np.ones([5,5],np.float32)/25
# 根据前面知识进行修改
# 可修改数组中的值 # 锐化
kernel = np.array([[1,1,1],[1,1,1],[1,1,1]],np.float32)/9 # 这是3*3的数组,故为9
dst = cv.filter2D(image,-1,kernel=kernel)
cv.imshow('custom_demo',dst)
if __name__ == "__main__":
filepath = "C:\\pictures\\person.jpg"
img = cv.imread(filepath) # blue green red
cv.namedWindow("input image",cv.WINDOW_AUTOSIZE)
cv.imshow("input image",img)
blur_demo(img)
median_blur_demo(img)
custom_blur_demo(img)
cv.waitKey(0)
cv.destroyAllWindows()
各个模糊后的结果以及原图
左:中值模糊
右:自定义模糊
左:均值模糊
右:原图