ContourFinding.py 文件源码

python
阅读 26 收藏 0 点赞 0 评论 0

项目:2017-Vision 作者: RoboticsTeam4904 项目源码 文件源码
def filterContoursAutocalibrate(contours, image=None):
    if len(contours) == 0:
        return []

    numContours = len(contours)
    areas = np.array([cv2.contourArea(contour) for contour in contours])

    boundingRects = [cv2.boundingRect(contour) for contour in contours]
    widths, heights, positions = boundingInfo(boundingRects)

    rotatedRects = [cv2.minAreaRect(contour) for contour in contours]
    if config.withOpenCV3:
        rotatedBoxes = [np.int0(cv2.boxPoints(rect)) for rect in rotatedRects]
    else:
        rotatedBoxes = [np.int0(cv2.cv.BoxPoints(rect)) for rect in rotatedRects]
    rotatedAreas = [cv2.contourArea(box) for box in rotatedBoxes]

    sizeScores = [size(area)for area in areas]
    ratioScores = ratios(widths, heights)
    rotationScores = [rotation(rect) for rect in rotatedRects]
    rectangularScores = [distToPolygon(contour, poly) for contour,poly in zip(contours, rotatedBoxes)]
    areaScores = polygonAreaDiff(areas, rotatedAreas)
    quadScores = [Quadrify(contour) for contour in contours]

    rectangularScores = np.divide(rectangularScores, widths)

    scores = np.array([sizeScores, ratioScores, rotationScores, rectangularScores, areaScores, quadScores])
    contourScores = np.dot(weights, scores)

    correctInds, incorrectInds = sortedInds(contourScores)
    correctContours = np.array(contours)[correctInds]

    averageScore = 0
    for i in range(numContours):
        averageScore += sizeScores[i]
        averageScore +=  ratioScores[i]
        averageScore +=  rotationScores[i]
        averageScore +=  rectangularScores[i]
        averageScore +=  areaScores[i]
        averageScore +=  quadScores[i]
    averageScore /= numContours
    return averageScore
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号