python - 打开CV cv.imread修改图像

标签 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 时,正确识别的单词要少得多。

最佳答案

当您有 .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/

相关文章:

javascript - Python (Flask) 为 Angular 项目的 index.html 文件提供服务

python - 你如何使用 BeautifulSoup 从 HTML 'datacell' 中获取文本

c - 如何在 OpenCV 中屏蔽浮点图像?

python - 我们可以训练 haar-cascade 来检测数字和字母吗?

c++ - 使用 Hough OpenCV 时出错

python - pycurl https 错误 : unable to get local issuer certificate

Python 请求 SSL 问题

python - Eclipse XLRD、XLWT 导入错误

opencv - OpenCV 中使用的 Yaml 文件格式

python - 检测快速移动球的最佳 OpenCV 算法?