Задать вопрос

Как сравнить 2 изображения OpenCV?

Здравствуйте.

С помощью Opencv я нахожу координаты картинки на скриншоте.

Mat screen = Highgui.imread(image1, Highgui.CV_LOAD_IMAGE_GRAYSCALE);
Mat image = Highgui.imread(image2, Highgui.CV_LOAD_IMAGE_GRAYSCALE);
Mat result = new Mat(screen.cols()- image.cols() + 1, screen.rows()- screen.rows() + 1, CvType.CV_32FC1);

Imgproc.matchTemplate(screen, image, result, Imgproc.TM_SQDIFF_NORMED);
Core.normalize(result, result, 0, 1, Core.NORM_MINMAX, -1, new Mat());
MinMaxLocResult mmr = Core.minMaxLoc(result);
Point matchLoc = mmr.minLoc;


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

Mat search_result = new Mat(screen, new Rect((int) matchLoc.x, (int) matchLoc.y, image.cols(), image.rows()));


Как теперь мне сравнить search_result и image например в процентном отношении на совпадение? Если можно получить по другому процент совпадения подскажите пожалуйста код.

Спасибо за ответ
  • Вопрос задан
  • 14869 просмотров
Подписаться 4 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
noonv
@noonv
Можно так, а можно этак.
Ответ написан
@rusianvodka
Здравствуйте, у меня возникла схожая проблема и вопрос.
Если вы нашли ответ, буду благодарен за его описание.
Имеется изображение - скриншот, и небольшой кусочек данного изображения, которое необходимо найти на скриншоте.
С помощью ROI я ограничиваю область там где необходимо искать, после использую теже функции что и вы, но как определить найден ли в данном ROI мой шаблон или нет? Особенно если область имеет иные размеры по отношению к шаблону.
Ответ написан
2ord
@2ord
Насколько я понимаю, необходимо было также и отфильтровать результат сравнения свыше некоторого порога.
Imgproc.matchTemplate(screen, image, result, Imgproc.TM_SQDIFF_NORMED);
Результат matchTemplate нужно поместить в переменную и затем отфильтровать.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы