【问题标题】:OpenCV - imread(), imwrite() increases the size of png?OpenCV - imread(),imwrite()增加png的大小?
【发布时间】:2012-08-26 07:55:06
【问题描述】:

我想尝试对文件进行一些简单的操作,我从打开和保存文件开始(我使用 Python)

image = cv2.imread("image.png")
cv2.imwrite("image_processed.png", image)

在此操作之后,我原来的 33kB 的 image 转换为相同的 144kB 图像。

我尝试过这样做:http://opencv.itseez.com/modules/highgui/doc/reading_and_writing_images_and_video.html?highlight=imwrite#imwrite

    params = list()
    params.append(cv.CV_IMWRITE_PNG_COMPRESSION)
    params.append(8)

    image = cv2.imread("image.png")
    cv2.imwrite("image_processed.png",image,params)

但这并没有太大变化(大小减少到 132kB)

这是我正在使用的图像:

【问题讨论】:

  • 我在使用 png 压缩时遇到了同样的问题。切换到scikit-image 并使用它的imsave 创造了奇迹。

标签: python image opencv image-size


【解决方案1】:

您可以使用第三方命令行工具 optipng 重新压缩和缩小 png 文件大小而不会丢失任何内容。

参考:

http://optipng.sourceforge.net/pngtech/optipng.html

https://github.com/johnpaulada/optipng

【讨论】:

    【解决方案2】:

    半相关,但我对matplotlib.image.imsave 有同样的问题 - 它会将 8 位灰度图像保存为 16 位,这会使尺寸膨胀,即使在使用 scipy.misc.bytescale 确保它是 8 之后也是如此位数组。但是,scipy.misc.imsave 将其正确保存为 8 位图像。

    【讨论】:

      【解决方案3】:

      正如 ypnos 所暗示的,您的源文件是 jpg(即使它具有 png 扩展名)。这就是为什么当您将其保存为 png 格式时,它将占用更多空间,因为您正在更改格式(jpg 到 png)。

      尝试将最后一行替换为:

      cv2.imwrite("image_processed.jpg",image,params)
      

      而且你会看到大小没有太大变化。

      或者,保持代码不变,但使用不同的图像,例如http://upload.wikimedia.org/wikipedia/commons/4/47/PNG_transparency_demonstration_1.png

      【讨论】:

        【解决方案4】:

        像 GIMP 这样的一些 png 编写器编写的压缩 PNG 比 opencv 使用的标准 libpng 要好得多。您还可以使用 Imagemagick 再次打开并保存图像,看看有什么不同(与 OpenCV 相比)。

        甚至还有专门的软件可以尝试更好地重新压缩 PNG,例如 pngcrush。

        你能提供有问题的图片吗?关于文件大小优化,我想玩一下。

        【讨论】:

        • 我已经添加了我正在使用的图像。考虑到您的回答 - 我意识到有些程序可以让我减小 png 的大小,但我想使用 OpenCVs 的功能。
        • 您提供了 JPEG 文件而不是原始 PNG,所以我无法真正查看压缩情况。但除此之外:您不会通过 OpenCV 获得更好的压缩。最后一件事可能是您存储 16 位图像而不是 8 位。如果您使用 CV_16U 矩阵,就会发生这种情况。
        猜你喜欢
        • 2012-11-22
        • 2017-11-17
        • 1970-01-01
        • 2020-11-03
        • 2013-11-28
        • 2015-11-25
        • 2010-12-02
        • 1970-01-01
        • 2010-12-13
        相关资源
        最近更新 更多