EasyOCR 不一致的颜色转换,BGR或RGB

qmelpv7a  于 4个月前  发布在  其他
关注(0)|答案(4)|浏览(44)

根据输入图像的数据类型,源代码会将其转换为RGB或BGR。
如果图像是字节串,则将其转换为RGB:
https://github.com/JaidedAI/EasyOCR/blob/master/easyocr/utils.py#L745
如果图像是一个具有4个通道(RGBA)的numpy数组,则将其转换为BGR:
https://github.com/JaidedAI/EasyOCR/blob/master/easyocr/utils.py#L760
如果图像是一个JPEG文件,则将其转换为BGR:
https://github.com/JaidedAI/EasyOCR/blob/master/easyocr/utils.py#L764
为什么这样做不一致?显然,在处理之前,图像应该处于一致的颜色空间中。所以它应该被转换为RGB或BGR?

vvppvyoh

vvppvyoh1#

确认我实际上在相同的图像上得到了不同的结果,这取决于我提供的数据类型。

import easyocr
import numpy as np
import PIL.Image

reader = easyocr.Reader(["en"])

input_image = "./scratch/ocr/1867239.jpg"

output1 = reader.readtext(input_image)

with open(input_image, "rb") as f:
    data = f.read()
output2 = reader.readtext(data)

image = PIL.Image.open(input_image)
output3 = reader.readtext(image)

image_arr = np.asarray(image)
output4 = reader.readtext(image_arr)

在上面的代码中,output2output4 是相同的,但与 output1output3 不同。

vjhs03f7

vjhs03f72#

CRAFT检测模型期望输入图像以RGB颜色空间提供:https://github.com/clovaai/CRAFT-pytorch/blob/master/imgproc.py#L14
因此,EasyOCR在转换为BGR颜色空间时似乎出现了错误。

46scxncf

46scxncf3#

CRAFT检测模型期望输入图像以RGB颜色空间提供:https://github.com/clovaai/CRAFT-pytorch/blob/master/imgproc.py#L14
因此,似乎EasyOCR在转换为BGR颜色空间时到处都出错了。您是否曾经得到过关于应该使用哪种颜色空间的答案,无论是检测器还是识别器?CRAFT似乎非常确定需要RGB,但我们是否知道EasyOCR识别器需要RBG还是BGR?

wwtsj6pe

wwtsj6pe4#

此外,这个部分https://github.com/JaidedAI/EasyOCR/blob/c999505ef6b43be1c4ee36aa04ad979175178352/easyocr/utils.py#L566C1-L578C1看起来像是在期望一个RGB图像,因为它正在使用PIL的重采样类。

相关问题