对于下面的代码,我想知道如何制作圆形内核而不是矩形内核。我目前正在查看一些圆形的东西,我想找到它的 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]
Run Code Online (Sandbox Code Playgroud)
我们在前面的示例中借助 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)
Run Code Online (Sandbox Code Playgroud)
当给定圆心时获取圆区域,您可以尝试以下函数:
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.
Run Code Online (Sandbox Code Playgroud)
希望这对您有帮助。
| 归档时间: |
|
| 查看次数: |
9564 次 |
| 最近记录: |