Получите среднее значение () каждого объекта в matchTemplate () - PullRequest
0 голосов
/ 25 апреля 2019

Я пытаюсь обнаружить несколько изображений в большем изображении, используя matchTemplate, и с этими изображениями получаем их среднее значение (), чтобы потом сравнить их и решить, имеют ли они нужный цвет.

Это то, что я имею до сих пор:

        w, h = template.shape[::-1]
        method = cv2.TM_CCOEFF_NORMED
        res = cv2.matchTemplate(images[1], template, method)
        min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)
        top_left = max_loc
        matches = np.where(res >= threshold)

        for (x, y) in zip(matches[1], matches[0]):
            cv2.rectangle(images[0], (x, y), (x + w, y + h), [0, 255, 255], 2)
            color = cv2.mean(images[0][top_left[1]:top_left[1] + h, top_left[0]:top_left[0] + w])
        cv2.imwrite('./TESTPLSWORK.png', images[0])

Я попытался реализовать forloop, где каждый раз, когда я использую minMaxLoc, получаю их значение max_loc для использования cv2.mean. К сожалению, это происходит только с первым элементом массива (вывод совпадений). Это моя идея, но вытаскивание одного значения 'match' с помощью np.delete после выполнения первой итерации не работает и просто нарушает структуру массива numpy.

Это будет вывод совпадений, найдя два объекта, соответствующих шаблону:

(array([231, 457], dtype=int32), array([ 957, 1312], dtype=int32))

Желаемый вывод для моей идеи для работы:

(array([231], dtype=int32), array([957], dtype=int32))
...