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

Как получить координаты шаблона в картинке в OpenCV?

Нужно получить координаты изображения в скриншоте, чтобы обрезать скриншот, как это сделать?
Основная идея в том чтобы питон листал страницы в браузере, скриншотил их, обрезал, склеивал страницы и ложил в pdf. Просто читать купленные книги в браузере неудобно, каждый раз нужно искать место где остановился.
может уже есть такая прога на питоне? я бы почитал
код скопирован в основном с официального сайта opencv и выдает результатом картинку:
import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt

img = cv.imread("1.png")
img2 = img.copy()
template = cv.imread('temp.jpg')
# All the 6 methods for comparison in a list
methods = ['cv.TM_CCOEFF', 'cv.TM_CCOEFF_NORMED', 'cv.TM_CCORR',
            'cv.TM_CCORR_NORMED', 'cv.TM_SQDIFF', 'cv.TM_SQDIFF_NORMED']
for meth in methods:
    img = img2.copy()
    method = eval(meth)
    # Apply template Matching
    res = cv.matchTemplate(img,template,method)
    cv.imwrite("{}.jpg".format(meth),res)
    min_val, max_val, min_loc, max_loc = cv.minMaxLoc(res)
    # If the method is TM_SQDIFF or TM_SQDIFF_NORMED, take minimum
    if method in [cv.TM_SQDIFF, cv.TM_SQDIFF_NORMED]:
        top_left = min_loc
    else:
        top_left = max_loc
    plt.subplot(121),plt.imshow(res,cmap = 'gray')
    plt.title('Matching Result'), plt.xticks([]), plt.yticks([])
    plt.subplot(122),plt.imshow(img,cmap = 'gray')
    plt.title('Detected Point'), plt.xticks([]), plt.yticks([])
    plt.suptitle(meth)
    plt.show()
  • Вопрос задан
  • 293 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
tumbler
@tumbler Куратор тега Python
бекенд-разработчик на python
res в вашем случае - это одноканальная картинка, содержащая результаты сравнения изображения с образцом, расположенным по соответствующим координатам. Точка, содержащая глобальный экстремум (в зависимости от метода), расположена по координатам шаблона.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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