Это огромная тема, на которую можно найти ответы от трех строк кода до целых исследовательских журналов.
Я выделю наиболее распространенные такие приемы и их результаты.
Сравнение гистограмм
Один из самых простых и быстрых способов. Предложено несколько десятилетий назад как средство поиска сходства изображений. Идея состоит в том, что в лесу будет много зеленого, а на человеческом лице - розового или чего-то еще. Итак, если вы сравните два изображения с лесами, вы увидите некоторое сходство между гистограммами, потому что на обоих много зеленого.
Обратная сторона: это слишком упрощенно. Банан и пляж будут выглядеть одинаково, поскольку оба они желтые.
Метод OpenCV: compareHist ()
Соответствие шаблонов
Хороший пример здесь matchTemplate поиска подходящего совпадения . Он сворачивает поисковое изображение с тем, по которому выполняется поиск. Обычно он используется, чтобы найти меньшие части изображения в большом.
Недостатки: хорошие результаты получаются только с идентичными изображениями, одинаковым размером и ориентацией.
Метод OpenCV: matchTemplate ()
Соответствие функций
Считается одним из самых эффективных способов поиска изображений. Некоторые функции извлекаются из изображения таким образом, чтобы гарантировать повторное распознавание тех же функций даже при повороте, масштабировании или перекосе. Элементы, извлеченные таким образом, могут быть сопоставлены с другими наборами функций изображения. Считается, что другое изображение с высокой долей признаков, совпадающих с первым, изображает ту же сцену.
Определение гомографии между двумя наборами точек позволит вам также найти относительную разницу в угле съемки между исходными изображениями или степень перекрытия.
Есть целый ряд OpenCV учебников / образцов на это, и хорошее видео здесь . Ему посвящен целый модуль OpenCV (features2d).
Минусы: это может быть медленным. Это не идеально.
На сайте вопросов и ответов OpenCV я говорю о разнице между дескрипторами функций, которые отлично подходят при сравнении целых изображений и дескрипторов текстур, которые используются для идентификации таких объектов, как лица людей или автомобили на изображении.