Как я могу нарисовать лист ответов Contours слева направо - PullRequest
0 голосов
/ 12 октября 2019

справка как мне поступить с этим кодом, я хочу ответить на проверку из листа ответов сверху вниз, затем слева направо, но этот код выполняет слева направо и сверху вниз

for (q, i) in enumerate(np.arange(0, len(questionCnts), 5)):
    # sort the contours for the current question from
    # left to right, then initialize the index of the
    # bubbled answer
    cnts = contours.sort_contours(questionCnts[i:i + 5])[0]
    bubbled = None  


    # loop over the sorted contours
    for (j, c) in enumerate(cnts):
        # construct a mask that reveals only the current
        # "bubble" for the question
        mask = np.zeros(thresh.shape, dtype="uint8")
        cv2.drawContours(mask, [c], -1, 255, -1)

        # apply the mask to the thresholded image, then
        # count the number of non-zero pixels in the
        # bubble area
        mask = cv2.bitwise_and(thresh, thresh, mask=mask)
        total = cv2.countNonZero(mask)

        # if the current total has a larger number of total
        # non-zero pixels, then we are examining the currently
        # bubbled-in answer
        if bubbled is None or total > bubbled[0]:
            bubbled = (total, j)

    # initialize the contour color and the index of the
    # *correct* answer
    color = (0, 0, 255)
    k = ANSWER_KEY[q]

    # check to see if the bubbled answer is correct
    if k == bubbled[1]:
        color = (0, 255, 0)
        correct += 1

    # draw the outline of the correct answer on the test
    cv2.drawContours(paper, [cnts[k]], -1, color, -1)

img 1 answerSheet img 2 answer вы увидите лист ответов в img1 , но реальный ответ - img2 в img2 ответ 1 - это ответ 2 - это 2, но теперь в img1 ответ 11 - это 2, как я могу сделать

1 Ответ

0 голосов
/ 12 октября 2019

Перед тем как начать перебирать все контуры, отсортируйте их по координате y. Затем начните итерацию партиями по 10 (каждая строка) и сортируйте каждую партию по координате х. Таким образом, вы получите каждый контур в правильной последовательности.

...