@apiwi

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

Не могу понять, что не так? Ищу картинку в картинке, а выделения происходят не там, где нужно
Опробовал все методы поиска

Шаблон:
618efe8514fc0717267397.png
Фото в котором ищем:
618efea0a1b0b492171328.png
Результат:
618efed6791b4042289703.png

Пытаюсь сделать выделение области расписания определенной группы. Подскажите пожалуйста
Код:
import cv2
method = cv2.TM_CCOEFF
small_image = cv2.imread('shab4.png') # что ищу
large_image = cv2.imread('output.png') # где ищу
result = cv2.matchTemplate(small_image, large_image, method)
mn,_,mnLoc,_ = cv2.minMaxLoc(result)
MPx,MPy = mnLoc
trows,tcols = small_image.shape[:2]
cv2.rectangle(large_image, (MPx,MPy),(MPx+tcols,MPy+trows),(0,0,255),5)
res = cv2.resize(large_image, dsize=(2500,2500))
cv2.namedWindow("Resized", cv2.WINDOW_NORMAL)
cv2.imshow("Resized", res)
cv2.waitKey(0)


Также пробовал, просто подчеркивать название группы. Тоже вышло криво
import cv2
method = cv2.CHAIN_APPROX_SIMPLE
small_image = cv2.imread('shab.png')
large_image = cv2.imread('output.png')
result = cv2.matchTemplate(small_image, large_image, method)
mn,_,mnLoc,_ = cv2.minMaxLoc(result)
MPx,MPy = mnLoc
trows,tcols = small_image.shape[:2]
h = (MPx + tcols//2)
v = (MPy + trows//2)
cv2.line(large_image, (MPx, (MPy+MPy+trows)//2), (MPx+tcols, (MPy+MPy+trows)//2), (0,255,255), thickness=10, lineType=8, shift=0)
cv2.imwrite('one.jpg', large_image)
res = cv2.resize(large_image, dsize=(2500,2500))
cv2.namedWindow("Resized", cv2.WINDOW_NORMAL)
cv2.imshow("Resized", res)
cv2.waitKey(0)
  • Вопрос задан
  • 155 просмотров
Решения вопроса 1
@apiwi Автор вопроса
Решил вопрос с помощью: pdfminer, pdf2image, PIL
Нашел координаты нужного текста с помощью pdfminer, преобразовал в картинку с помощью pdf2image и с помощью PIL сделал обрезку нужной области ( прибавил к координатам значения )
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы