07.opencv的模糊操作

有三种模糊:

均值模糊
中值模糊
自定义模糊

原理:

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

均值模糊

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()
发布了60 篇原创文章 · 获赞 8 · 访问量 3322

猜你喜欢

转载自blog.csdn.net/qq_43476433/article/details/103552145
今日推荐