OpenCV实现模糊操作

模糊操作的基本原理:1.基于离散卷积,2.定义好每个卷积核,3.不同卷积核得到不同的卷积效果,4.模糊是卷积的一种表象

import cv2 as cv
import numpy as np


def blur_demo(image):   # 均值模糊
    dst = cv.blur(image, (5, 5))    # (5, 5)模糊参数,第一个5是水平模糊,第二个5是垂直模糊
    cv.imshow("blur_demo", dst)


def median_demo(image):   # 中值模糊,对椒盐噪声有很好的的去噪效果
    dst = cv.medianBlur(image, 5)    # 5模糊参数
    cv.imshow("median_demo", dst)


def custom_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
    # kernel = np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]], np.float32)    # 该参数起到锐化效果
    dst = cv.filter2D(image, -1, kernel=kernel)
    cv.imshow("custom_demo", dst)


src = cv.imread("C:/Users/admin/Desktop/16.jpg")  # 打开一张图片
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)  # 设置图片尺寸,自动
cv.imshow("input image", src)  # 显示图像
blur_demo(src)
median_demo(src)
custom_demo(src)
cv.waitKey(0)
cv.destroyAllWindows()

效果

OpenCV实现模糊操作_第1张图片

调整自定义模糊中的参数,可以得到不同的效果

如果设置成如下参数:

kernel = np.array([[1, 1, 1], [1, 1, 1], [1, 1, 1]], np.float32)/9

OpenCV实现模糊操作_第2张图片

设置成

kernel = np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]], np.float32)    # 该参数起到锐化效果

OpenCV实现模糊操作_第3张图片

你可能感兴趣的:(python)