对于下面的代码,我想知道如何制作圆形内核而不是矩形内核。我目前正在寻找一些循环的东西,我想找到它的BGR平均值。通过调整我的内核,我的数据将更准确。
for center in c_1:
b = img2[center[0]-4: center[0]+5, center[1]-4: center[1]+5, 0]
g = img2[center[0]-4: center[0]+5, center[1]-4: center[1]+5, 1]
r = img2[center[0]-4: center[0]+5, center[1]-4: center[1]+5, 2]
答案 0 :(得分:1)
获得圆心区域时,您可以尝试以下功能:
def circleAverage(center, r = 4):
"""
"""
for i in range(center[0]-r, center[0]+r):
for j in range(center[1]-r, center[1] + r):
if (center[0] - i) ** 2 + (center[1] - j) ** 2 <= r**2:
// do your computation here.
希望这会对你有所帮助。
答案 1 :(得分:0)
在之前的示例中,我们借助Numpy手动创建了一个结构元素。它是矩形。但是在某些情况下,您可能需要椭圆形/圆形的内核。因此,为此,OpenCV具有一个函数cv2.getStructuringElement()。您只需传递内核的形状和大小,就可以得到所需的内核。
# Elliptical Kernel
>>> cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(5,5))
array([[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]], dtype=uint8)