我使用cv.imread
在python中读取png文件。然后,当我使用cv.imwrite
函数立即保存图像时,我发现图像中的颜色已略有变化。我正在尝试对此图像执行字符识别,而OCR在python图像上的性能远不如原始图像。
第一张图片是原始图片,第二张图片是使用OpenCV保存的图片。
我们可以看到绿色略有变化,尽管这似乎并不重要,但它会影响OCR,因此我认为png还会发生其他变化。有谁知道这可能是为什么以及我如何解决这个问题。
代码如下
img = cv2.imread('file.png')
cv2.imwrite('out.png', img)
当我在tesseract中运行file.png进行字符识别时,我得到了不错的结果,但是当我在tesseract中运行out.png时,则很少的单词被正确识别。
答案 0 :(得分:2)
当您拥有.png
图像文件时,您应该作为.png
文件读取。
我下载了您的图片并亲自进行了分析。
首先,我像您一样阅读图像:
img = cv2.imread('file.png')
img.shape
返回(446, 864, 3)
,即具有3个通道的图像。
接下来,我使用cv2.IMREAD_UNCHANGED
读取同一张图片:
img = cv2.imread('file.png', cv2.IMREAD_UNCHANGED)
img.shape
返回(446, 864, 4)
,即具有 4 个频道的图像。
.png
文件具有附加的透明度通道。因此,接下来您遇到一个.png
文件,请使用cv2.IMREAD_UNCHANGED
标志对其进行读取
更新:
列举各种读取图像的方法:
for var in dir(cv2):
if var.startswith('IMREAD'):
print(var)
返回:
IMREAD_ANYCOLOR
IMREAD_ANYDEPTH
IMREAD_COLOR
IMREAD_GRAYSCALE
IMREAD_LOAD_GDAL
IMREAD_UNCHANGED