根据输入图像的数据类型,源代码会将其转换为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?
4条答案
按热度按时间vvppvyoh1#
确认我实际上在相同的图像上得到了不同的结果,这取决于我提供的数据类型。
在上面的代码中,
output2
和output4
是相同的,但与output1
和output3
不同。vjhs03f72#
CRAFT检测模型期望输入图像以RGB颜色空间提供:https://github.com/clovaai/CRAFT-pytorch/blob/master/imgproc.py#L14
因此,EasyOCR在转换为BGR颜色空间时似乎出现了错误。
46scxncf3#
CRAFT检测模型期望输入图像以RGB颜色空间提供:https://github.com/clovaai/CRAFT-pytorch/blob/master/imgproc.py#L14
因此,似乎EasyOCR在转换为BGR颜色空间时到处都出错了。您是否曾经得到过关于应该使用哪种颜色空间的答案,无论是检测器还是识别器?CRAFT似乎非常确定需要RGB,但我们是否知道EasyOCR识别器需要RBG还是BGR?
wwtsj6pe4#
此外,这个部分https://github.com/JaidedAI/EasyOCR/blob/c999505ef6b43be1c4ee36aa04ad979175178352/easyocr/utils.py#L566C1-L578C1看起来像是在期望一个RGB图像,因为它正在使用PIL的重采样类。