OpenCV Perimeter和Area连接组件中的给定点

时间:2017-01-23 21:28:56

标签: python opencv image-processing connected-components

假设我有一个二进制图像,我想在OpenCV中执行以下操作:给定一个点,测量该点所属的连通组件的面积和周长。

def areaAndPerimeter(point):
   ...do some stuff...
   return area, perimeter

我知道我可以使用cv2.findContours()来查找每个连接组件的周长和区域,但我不知道如何将该信息与输入点配对。哪个周长和区域对应于point

的连通分量

1 个答案:

答案 0 :(得分:0)

对于这个功能,我只是从这个点开始增长一个区域。以下是伪代码:

 - Define a point queue Q
 - Define a foreground point vector F
 - Define a boundary point vector B
 - Put starting point in Q
 - While Q is not empty
      - p = Q.top
      - if p is foreground
          - F.push(p)
          - Q.push(neighbors of p)
      - else 
          - B.push(p)
- Return size(F), size(B)

最后,F包含前景像素,B包含边界像素(黑色在右边像素之外)。因此,size(F)给出了区域,size(B)给出了区域。