Используйте шаблон соответствия для поиска похожих изображений Opencv - PullRequest
1 голос
/ 14 февраля 2020

Я использую шаблон соответствия в Opencv, чтобы найти похожие изображения. Пока у меня все получилось, но я не могу понять, как сравнивать изображения сейчас.

Я думал о том, чтобы использовать cv2.matchTemplate, а затем использовать порог, чтобы проверить, совпадают ли какие-либо части, и удалить все, что не получается. Но когда я смотрю на массив, который производит, похожее изображение имеет

(array([0], dtype=int64), array([0], dtype=int64))

в качестве вывода.

Другое изображение имеет

(array([], dtype=int64), array([], dtype=int64))

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

(array([], dtype=int64), array([], dtype=int64))

Что я, хотя и должен быть таким же, как аналогичное изображение.

Мой вопрос: как я могу определить, что похоже, а что нет? Вот код, который я сейчас использую.

def matcher(template, img, match_type, threshold):
    # Match operation
    res = cv2.matchTemplate(img, template, match_type)
    # store coordinates of matched areas
    loc = np.where( res >= threshold)
    return loc

locsame = matcher(template, same, cv2.TM_SQDIFF, 0.8)    
loc1 = matcher(template, sim, cv2.TM_SQDIFF, 0.8)
loc2 = matcher(template, di, cv2.TM_CCOEFF_NORMED, 0.8)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...