python实现高斯滤波器(numpy,opencv)

import cv2 as cv
import numpy as np


def gauss_filter(kernel_size=3, sigma=1):
    max_idx = kernel_size // 2
    idx = np.linspace(-max_idx, max_idx, kernel_size)
    Y, X = np.meshgrid(idx, idx)
    gauss_filter = np.exp(-(X**2 + Y**2) / (2 * sigma**2))
    gauss_filter /= np.sum(np.sum(gauss_filter))
    return gauss_filter


if __name__ == '__main__':
    gauss_kernel = gauss_filter(kernel_size=5, sigma=3)
    src = cv.imread("image_process\image\lena.png")
    src = cv.cvtColor(src, cv.COLOR_RGB2GRAY)
    dst = cv.filter2D(src, -1, gauss_kernel)
    cv.imshow("lena_src", src)
    cv.imshow("lena_blur", dst)
    cv.waitKey()

处理结果

python实现高斯滤波器(numpy,opencv)_第1张图片
python实现高斯滤波器(numpy,opencv)_第2张图片

你可能感兴趣的:(python,图像处理)