打开Cv cv.imread修改图片

时间:2018-07-09 11:09:45

标签: python opencv

我使用cv.imread在python中读取png文件。然后,当我使用cv.imwrite函数立即保存图像时,我发现图像中的颜色已略有变化。我正在尝试对此图像执行字符识别,而OCR在python图像上的性能远不如原始图像。 第一张图片是原始图片,第二张图片是使用OpenCV保存的图片。

First

second

我们可以看到绿色略有变化,尽管这似乎并不重要,但它会影响OCR,因此我认为png还会发生其他变化。有谁知道这可能是为什么以及我如何解决这个问题。

代码如下

img = cv2.imread('file.png')
cv2.imwrite('out.png', img)

当我在tesseract中运行file.png进行字符识别时,我得到了不错的结果,但是当我在tesseract中运行out.png时,则很少的单词被正确识别。

1 个答案:

答案 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