Я использую шаблон соответствия в 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)