如何在模糊图像时使用不同的内核形状?
How to use different kernel shapes while blurring an image?
我想使用像 cv2.GaussianBlur()
这样的快速模糊函数,但它只允许矩形内核形状。有没有办法使用椭圆核形状?如果有任何其他模糊功能允许,您能否建议该功能?
不依赖于内置内核或 opencv 的内置函数,而是使用 cv2.filter2D() 函数应用您选择的具有值的 custom 内核你已经选择了!有了这个,您不仅可以应用您提到的"elliptic"内核,还可以应用您想要的任何内核。
用法如下:
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)
所以在上面的代码中,内核看起来像这样:
已使用。
现在如果你想要一个 "elliptical" 内核,你可以手动构建一个 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]]
哪个是你的椭圆核!
我想使用像 cv2.GaussianBlur()
这样的快速模糊函数,但它只允许矩形内核形状。有没有办法使用椭圆核形状?如果有任何其他模糊功能允许,您能否建议该功能?
不依赖于内置内核或 opencv 的内置函数,而是使用 cv2.filter2D() 函数应用您选择的具有值的 custom 内核你已经选择了!有了这个,您不仅可以应用您提到的"elliptic"内核,还可以应用您想要的任何内核。
用法如下:
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)
所以在上面的代码中,内核看起来像这样:
已使用。
现在如果你想要一个 "elliptical" 内核,你可以手动构建一个 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]]
哪个是你的椭圆核!