【问题标题】:Saved webp images are 3x bigger than jpg in OpenCV在 OpenCV 中保存的 webp 图像比 jpg 大 3 倍
【发布时间】:2021-10-16 10:32:26
【问题描述】:

由于某种原因,当我在 Python 中使用 OpenCV 时,在我的 Ubuntu 20.04 机器上:

cv2.imwrite("myfile.webp", cv2image)

在我的代码中,800x600 像素的文件大约有 300 KiB,而如果我这样做:

cv2.imwrite("myfile.jpg", cv2image)

相同像素大小的输出文件大约有100 KiB。

如果 webp 的大小应该比 jpg 小 25%,为什么会这样?

还是我必须先设置一些选项?

附:对于png:

cv2.imwrite("myfile.png", cv2image)

大小约为 500 KiB。

【问题讨论】:

    标签: python file opencv jpeg webp


    【解决方案1】:

    Webp 有两种保存数据的形式。有损(JPEG 所做的),其中信息丢失以减少数据,无损(PNG 所做的)没有数据丢失。

    默认情况下,opencv 使用其 cv2.IMWRITE_WEBP_QUALITY 来确定质量。如果设置为 100,则表示无压缩(无损)

    https://docs.opencv.org/master/d8/d6a/group__imgcodecs__flags.html#gga292d81be8d76901bff7988d18d2b42aca7d3f848cc45d3138de0a2053d213a54a

    【讨论】:

    • 谢谢,知道如何在 Python 中更改它吗?
    • 你可以通过 cv2.IMWRITE_WEBP_QUALITY=80 覆盖它,这会覆盖所有 webp 操作的它
    • 嗯,一点效果都没有,不管是80还是20都在300kB左右。我把行放在imwrite行之前,它不起作用。
    • 不知道opencv对你有没有要求,但是pillow也有这个功能:pillow.readthedocs.io/en/stable/handbook/…
    • 已解决!它应该是这样工作的:cv2.imwrite("myfile.webp", cv2image, [int(cv2.IMWRITE_WEBP_QUALITY), 20]) 现在,文件有 4 kB ;D
    【解决方案2】:

    解决了!它应该是这样工作的:

    cv2.imwrite("myfile.webp", cv2image, [int(cv2.IMWRITE_WEBP_QUALITY), 20])

    现在,文件有 4 kB ;D

    【讨论】:

      猜你喜欢
      • 2018-05-10
      • 1970-01-01
      • 2010-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多