python easyocr отрисовка рамки вокруг распознанного текста при помощи opencv

Рейтинг: 0Ответов: 1Опубликовано: 31.01.2023

Код получает на вход изображение с текстом и с помощью easyocr распознаёт текст распознанный текст должен на изображении выделяться рамкой и отображаться через opencv.

import easyocr
import cv2

reader = easyocr.Reader(['ru','en'])
result = reader.readtext('image.png')

#print(result)

img = cv2.imread("image.png")

for word in result:
    word_box = word[1]
    cv2.rectangle(img, (word_box[0], word_box[1]), (word_box[2], word_box[3]), (255, 0, 0), 2)


cv2.imshow("img",img)
cv2.waitKey(0)
cv2.destroyWindow()

Выделение текста в рамку выдаёт такую ошибку:

Traceback (most recent call last):
  File "/home/alex/Документы/ocr.py", line 20, in <module>
    cv2.rectangle(img, (word_box[0], word_box[1]), (word_box[2], word_box[3]), (255, 0, 0), 2)
cv2.error: OpenCV(4.7.0) :-1: error: (-5:Bad argument) in function 'rectangle'

Буду очень благодарен если кто-нибудь поможет исправить.

Ответы

▲ 0

Можно использовать следующий код:

import easyocr
import cv2

reader = easyocr.Reader(['ru','en'])
result = reader.readtext('image.png')

#print(result)

img = cv2.imread("image.png")

for (coord, text, prob) in result:
    (topleft, topright, bottomright, bottomleft) = coord
    tx, ty = (int(topleft[0]), int(topleft[1]))
    bx, by = (int(bottomright[0]), int(bottomright[1]))
    cv2.rectangle(img, (tx, ty), (bx, by), (255, 0, 0), 2)


cv2.imshow("img",img)
cv2.waitKey(0)
cv2.destroyWindow()