如何制作圆形内核?

时间:2017-06-12 17:35:24

标签: python kernel

对于下面的代码,我想知道如何制作圆形内核而不是矩形内核。我目前正在寻找一些循环的东西,我想找到它的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]

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)

发件人:https://docs.opencv.org/3.0-beta/doc/py_tutorials/py_imgproc/py_morphological_ops/py_morphological_ops.html

  

在之前的示例中,我们借助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)