首页 > 解决方案 > 如何在模糊图像的同时使用不同的内核形状?

问题描述

我想使用快速模糊功能,cv2.GaussianBlur()但它只允许矩形内核形状。有没有办法使用椭圆核形状?如果任何其他模糊功能允许,您能否建议该功能?

标签: pythonimage-processingblurgaussianblur

解决方案


不要依赖内置内核或 opencv 的内置函数,而是使用 cv2.filter2D() 函数将您选择的自定义内核与您选择的值一起应用!有了这个,您不仅可以应用您提到的“椭圆”内核,还可以应用您想要的任何内核。

这是用法:

import cv2
import numpy as np

img = cv2.imread('image.png')

kernel = np.ones((5,5),np.float32)/25
dst = cv2.filter2D(img,-1,kernel)

所以在上面的代码中,一个看起来像这样的内核:

在此处输入图像描述

用来。

现在,如果您想要一个“椭圆”内核,您可以手动构建一个 np 数组(即内核),在每一行和每列中使用自定义值,或者您可以使用 cv2 的 cv2.getStructuringElement 函数为您构建椭圆内核,然后您可以在 filter2D() 函数中使用这个内核。

cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(5,5))

上面的函数将打印:

[[0, 0, 1, 0, 0],
 [1, 1, 1, 1, 1],
 [1, 1, 1, 1, 1],
 [1, 1, 1, 1, 1],
 [0, 0, 1, 0, 0]]

这是你的椭圆内核!


推荐阅读