Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Здесь выполняется поиск по шаблону
- */
- #include "search_by_template.h"
- int main(int argc, char** argv)
- {
- // Считываем изображение
- Mat image = imread("C:/Users/alex1/source/repos/Practics/img.jpg");
- //Mat image = imread("C:/Users/alex1/source/repos/Practics/img.png"); // норм пример
- Mat result;
- // Создаём шаблон
- Mat temp = imread("C:/Users/alex1/source/repos/Practics/tmp.jpg", 0);
- //Mat temp = imread("C:/Users/alex1/source/repos/Practics/tmp.png", 0);
- // Делаем фотку чб
- Mat image_gray;
- cvtColor(image, image_gray, COLOR_BGR2GRAY);
- /** Метрика расхождений
- * Ориг: https://habr.com/ru/company/joom/blog/445354/
- * TM_SQDIFF — сумма квадратов разниц значений пикселей
- * TM_SQDIFF_NORMED — сумма квадрат разниц цветов, отнормированная в диапазон 0..1.
- * TM_CCORR — сумма поэлементных произведений шаблона и сегмента картинки
- * TM_CCORR_NORMED — сумма поэлементных произведений, отнормированное в диапазон -1..1.
- * TM_CCOEFF — кросс-коррелация изображений без среднего
- * TM_CCOEFF_NORMED — кросс-корреляция между изображениями без среднего, отнормированная в -1..1 (корреляция Пирсона)
- */
- int match_method = TM_CCORR_NORMED;
- double min_Val, max_Val;
- Point min_Loc, max_Loc, matchLoc;
- // Проверка на неправильно введённое название файла
- if (image.empty())
- {
- cout << "Could not open or find the image" << endl;
- return -1;
- }
- // Сопоставляем с шаблоном
- matchTemplate(image_gray, temp, result, match_method);
- minMaxLoc(result, &min_Val, &max_Val, &min_Loc, &max_Loc, Mat());
- // В зависимости от алгоритма, первой точкой могут являться разные ответы функции
- if (match_method == TM_SQDIFF || match_method == TM_SQDIFF_NORMED)
- matchLoc = min_Loc;
- else
- matchLoc = max_Loc;
- // Рисуем прямоугольник
- rectangle(image, matchLoc,
- Point(matchLoc.x + temp.cols,
- matchLoc.y + temp.rows),
- Scalar(255, 0, 0), 3, 8, 0);
- // Выводим весь наш труд
- show_window(image);
- return 0;
- }
- void show_window(Mat image) {
- String windowName = "Let's help Dora find a template"; // Установка имени окна
- namedWindow(windowName); // Создание окна
- imshow(windowName, image); // Грузим картинку в окно
- waitKey(0); // при нажатии на кнопку грохаем окно
- destroyWindow(windowName); // вот тут грохаем
- }
Advertisement
Add Comment
Please, Sign In to add comment