代码之家  ›  专栏  ›  技术社区  ›  lucians

找到cv2的面积。findContours()(Python、OpenCV)

  •  4
  • lucians  · 技术社区  · 8 年前

    我试图在下一幅图像中找到/计算轮廓面积:

    contour

    目标是 你们可以在图像中看到,这些水滴的轮廓面积小于我给出的值。

    removal

    我该如何设置?

    这是

    import cv2
    
    im = cv2.imread('source.png')
    imgray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
    ret,thresh = cv2.threshold(imgray,127,255,0)
    image, contours, hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
    
    img = cv2.drawContours(im, contours, -1, (0,255,0), 1)
    
    cv2.imshow('contour',img)
    cv2.waitKey(0)
    cv2.imwrite('contour.png',img)
    

    ...这是 来源 图片:

    origin

    2 回复  |  直到 8 年前
        1
  •  5
  •   Martin Evans    8 年前

    您可以使用 cv2.contourArea() 要决定绘制哪一个:

    for contour in contours:
        if cv2.contourArea(contour) < 80:
            cv2.drawContours(im, contour, -1, (255, 255, 255), 3)
    
        2
  •  1
  •   zindarod    8 年前

    有多种方法可以做到这一点。一种方法是找到边界矩形的面积。

    for contour in contours:
       rect = cv2.boundingRect(contour)
       area = rect[2] * rect[3]