Существует несколько способов, которыми OpenCV поддерживает сравнение двух изображений и то, насколько «похожи» эти изображения. Эти методы включают сравнение гистограмм, сопоставление с шаблоном и сопоставление объектов.
Метод сравнения гистограмм cv2.compareHist()
, вероятно, является самым простым и быстрым методом, однако иногда он может быть слишком упрощенным и неточным. Другой метод - сопоставление с шаблоном cv2.matchTemplate()
, который сравнивает поисковое изображение «шаблона» с целевым изображением. Этот метод хорошо работает для идентичных изображений с одинаковым размером и ориентацией, но может быть неэффективным с угловыми изображениями. Метод сопоставление объектов , вероятно, является одним из наиболее эффективных методов, поскольку извлеченные функции можно использовать для определения сходства между изображениями. Эти признаки можно распознать по повернутым или масштабированным целям, так как большая часть сходств подразумевает один и тот же объект. Эта категория может быть далее разделена на дескрипторы текстуры (HOG, LBP, Haar) и дескрипторы ключевых точек (SIFT / SURF).
Для вашего приложения я бы посмотрел на соответствие шаблона или функции, так как ваши изображения могут различаться по углу.