Search code examples
opencvcomputer-visionconvex-hullfeature-extraction

How can i calculate elongation of a convex hull in opencv?


I have found this way to calculate elongation basing on image moments

#ELONGATION
def elongation(m):
    x = m['mu20'] + m['mu02']
    y = 4 * m['mu11']**2 + (m['mu20'] - m['mu02'])**2
    return (x + y**0.5) / (x - y**0.5)

mom = cv2.moments(unicocnt, 1)    
elongation = elongation(mom)

How can i calculate elongation of a Convex Hull?

hull = cv2.convexHull(unicocnt)

where 'unicocnt' is a contour that was taken with find contours.


Solution

  • By default, convexHull output a vector of indices of points. You have to set the returnPoints argument to 1 to output a vector of points that you can then pass to cv2.moments.