首页 > 解决方案 > 如何在 Python 中从图像中读取文本的颜色

问题描述

我正在构建一个可以从图像中读取文本的项目。我还需要确定这段文字是用哪种颜色书写的。图像是计算机生成的,并且总是由数字组成。我正在使用 PyTesseract 进行 OCR 检测。谁能向我建议我该怎么做?

示例图像

比如说我需要我的 python 代码中的信息,比如 429.05 Green

我的代码如下

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)

标签: pythonocr

解决方案


这可以通过 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'

并使用基于 Web 的十六进制选择器快速确认:

计算颜色

这对于您的测试图像看起来是正确的,但是如果您正在处理的图像不同,您可能需要稍微调整一下。


推荐阅读