我使用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 时,正确识别的单词要少得多。
最佳答案
当您有 .png
图像文件时,您应该将读取为 .png
文件。
我下载了您的图像并自己做了一些分析。
首先,我像您一样阅读了图像:
img = cv2.imread('file.png')
img.shape
返回(446, 864, 3)
,即具有 3 个 channel 的图像。接下来我使用
cv2.IMREAD_UNCHANGED
读取相同的图像:img = cv2.imread('file.png', cv2.IMREAD_UNCHANGED)
img.shape
返回(446, 864, 4)
,即具有 4 个 channel 的图像。
.png
文件有一个额外的透明度 channel 。接下来,您会遇到一个 .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
关于python - 打开CV cv.imread修改图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51244141/