Интерпретация результатов с использованием matchTemplate
Я пытаюсь сопоставить 2 изображения, используя следующий код matchTemplate.
int match_method = Imgproc.TM_CCOEFF_NORMED;
int result_colsAB = matB.cols() - matA.cols() + 1;
int result_rowsAB = matB.rows() - matA.rows() + 1;
Mat resultAB = new Mat(result_rowsAB, result_colsAB, CvType.CV_8UC1);
Imgproc.matchTemplate(matA, matB, resultAB,match_method);
//Core.normalize(resultAB, resultAB, 0.0, 1.0, Core.NORM_MINMAX, -1, new Mat());
MinMaxLocResult mmr = Core.minMaxLoc(resultAB);
System.out.println( mmr.maxVal);
Это дает ожидаемый 0,99 при сравнении 2 заполненных кругов, как ожидалось
Но он дает 1,0 при сравнении заполненного круга и заполненного квадрата почти одинакового размера.
Что я делаю неправильно? Изображения в черно-белом.
1 ответ
Идеальное совпадение должно отображаться как.99999999
Если вы получаете 1.0, вы либо нормализуете значения после (что не похоже на вас)
или что-то еще происходит.
Возможно, вы захотите убедиться, что ваш размер правильный (шаблон поиска, матрица результатов и т. Д.)
Я действительно не думаю, что вы должны получить 1.0, потому что я сам проверил это с идеальным соответствием, и мои результаты были.9999.....