Как прочитать цвет текста с изображения в Python - PullRequest
2 голосов
/ 02 августа 2020

Я создаю проект, который может читать текст с изображений. Еще мне нужно определить, каким цветом написан этот текст. Изображения генерируются компьютером и всегда состоят из чисел. Я использую PyTesseract для распознавания текста. Может ли кто-нибудь предложить мне, как я могу это сделать?

Образец изображения

Скажем, например, мне нужна информация в моем python коде, например 429.05 Зеленый

Мой код:

import pytesseract
import cv2

pytesseract.pytesseract.tesseract_cmd = "C:\\Program Files\\Tesseract-OCR\\tesseract.exe"
img = cv2.imread("D:\\test2.png")
text = pytesseract.image_to_string(img)

print(text)

Ответы [ 2 ]

1 голос
/ 02 августа 2020

Это можно сделать с помощью библиотеки Pillow.

Сначала импортируйте необходимые библиотеки и используйте метод getcolors для получения цветовой палитры, отсортировав ее по количеству пикселей по возрастанию.

from PIL import Image
i = Image.open("D:\\test2.png")

colors = sorted(i.getcolors())

Для вашего изображения colors теперь представляет собой список кортежей, где первый элемент в каждом кортеже - это количество пикселей, содержащих указанный цвет, а второй элемент - это еще один кортеж, указывающий цветовой код RGB.

Последний элемент в списке - это элемент с наибольшим количеством пикселей (белый):

>>> colors[-1]
(2547, (255, 255, 255))

Второй последний, вероятно, цвет, который вы хотите:

>>> colors[-2]
(175, (76, 175, 80))

Тогда это может быть преобразован в шестнадцатеричный код :

>>> '#%02x%02x%02x' % colors[-2][1]
'#4caf50'

И быстро подтвердите с помощью веб-средства выбора шестнадцатеричного кода:

расчетный цвет

Это выглядит правильным для вашего тестового изображения, но вам может потребоваться небольшая настройка, если изображения, с которыми вы работаете, различаются.

0 голосов
/ 02 августа 2020

Спасибо всем за поддержку. Я обрезал изображение, содержащее первую букву, затем применил шаги, предложенные @ v25. Сильфон - это код.

import pytesseract
from PIL import Image


pytesseract.pytesseract.tesseract_cmd = "C:\\Program Files\\Tesseract-OCR\\tesseract.exe"
img = Image.open("D:\\test1.png")

text = pytesseract.image_to_boxes(img).split(" ")
(left, upper, right, lower) = (int(text[1]),int(text[2])-8,int(text[3]),int(text[4])+8)
im_crop = img.crop((left, upper, right, lower))
colors = sorted(im_crop.getcolors())
hex = ('#%02x%02x%02x' % colors[-2][1])
color = None
if (hex == '#91949a'):
    color = "Black"
elif ( hex == '#4caf50'):
    color = "Green"
elif ( hex == '#ff9d9d'):
color= "Red"
number = pytesseract.image_to_string(img)
print("Number is: "+number+" Color is: "+color)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...