本文整理汇总了Python中cv2.matchShapes方法的典型用法代码示例。如果您正苦于以下问题:Python cv2.matchShapes方法的具体用法?Python cv2.matchShapes怎么用?Python cv2.matchShapes使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类cv2
的用法示例。
在下文中一共展示了cv2.matchShapes方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: findEllipses
# 需要导入模块: import cv2 [as 别名]
# 或者: from cv2 import matchShapes [as 别名]
def findEllipses(edges):
contours, _ = cv2.findContours(edges.copy(), cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
ellipseMask = np.zeros(edges.shape, dtype=np.uint8)
contourMask = np.zeros(edges.shape, dtype=np.uint8)
pi_4 = np.pi * 4
for i, contour in enumerate(contours):
if len(contour) < 5:
continue
area = cv2.contourArea(contour)
if area <= 100: # skip ellipses smaller then 10x10
continue
arclen = cv2.arcLength(contour, True)
circularity = (pi_4 * area) / (arclen * arclen)
ellipse = cv2.fitEllipse(contour)
poly = cv2.ellipse2Poly((int(ellipse[0][0]), int(ellipse[0][1])), (int(ellipse[1][0] / 2), int(ellipse[1][1] / 2)), int(ellipse[2]), 0, 360, 5)
# if contour is circular enough
if circularity > 0.6:
cv2.fillPoly(ellipseMask, [poly], 255)
continue
# if contour has enough similarity to an ellipse
similarity = cv2.matchShapes(poly.reshape((poly.shape[0], 1, poly.shape[1])), contour, cv2.cv.CV_CONTOURS_MATCH_I2, 0)
if similarity <= 0.2:
cv2.fillPoly(contourMask, [poly], 255)
return ellipseMask, contourMask
示例2: matchMaxAreaWithShape
# 需要导入模块: import cv2 [as 别名]
# 或者: from cv2 import matchShapes [as 别名]
def matchMaxAreaWithShape(self, mask, shape):
"""it returns a value which identify the similarity between
the largest area contour and a shape.
The lower the result, the better match it is. It is calculated
based on the hu-moment values. For example if we have three shapes:
A=star, B=rotated dilatated star, C=square
Matching Image A with itself = 0.0
Matching Image A with Image B = 0.001946
Matching Image A with Image C = 0.326911
@param mask the binary image to use in the function
@param shape the contour to compare
"""
cnt = self.returnMaxAreaContour(mask)
return cv2.matchShapes(cnt, shape, 1, 0.0)