我想使用像cv2.GaussianBlur()
这样的快速模糊函数,但它只允许矩形内核形状。有没有办法使用椭圆核形状?如果还有其他模糊功能允许的话,您能建议一下该功能吗?
最佳答案
不要依赖内置内核或 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]]
这是你的椭圆内核!
关于python - 如何在模糊图像时使用不同的内核形状?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58844989/