优化计算机视觉和图像处理中的图像格式:OpenCV中的PNG、JPG和WEBP

点击下方卡片,关注“小白玩转Python”公众号

f3f7bd4c1774f9c13989c5cf479fbcfe.jpeg

在计算机视觉和图像处理应用中,选择正确的图像格式可以影响性能和质量。无论你是在预处理数据以训练深度学习模型、在实时系统上运行推理,还是处理大型数据集,了解PNG、JPG和WEBP的优势和劣势可以帮助你做出明智的选择。让我们深入了解每种格式在图像处理方面的独特特性,并提供实际的代码示例,展示如何使用Python中的OpenCV加载和保存这些格式。

目录

  1. PNG(便携式网络图形)

  2. JPG/JPEG(联合图像专家小组)

  3. WEBP(网络图片格式)

1. PNG(便携式网络图形)

优势:

PNG支持无损压缩,保留所有图像细节并支持透明度。PNG通常适用于需要精确像素值的图像处理任务(例如,分割掩码或科学图像分析)。

劣势:

PNG文件通常较大,这可能会减慢处理流程,特别是在处理大型数据集时。如果存储或带宽是限制因素,这可能会影响性能,使PNG不太适合实时或资源受限的应用。

在OpenCV中的使用:

import cv2


# Reading a PNG image
image = cv2.imread("example.png", cv2.IMREAD_UNCHANGED)  # To retain transparency if present


# Saving as PNG with maximum quality (lossless compression)
cv2.imwrite("output.png", image, [cv2.IMWRITE_PNG_COMPRESSION, 0])  # 0 is lossless, 9 is max compression

2. JPG/JPEG(联合图像专家小组)

优势:

JPG广泛用于照片和自然图像,具有高效的有损压缩。它非常适合在大型图像数据集中减少文件大小,或者当速度至关重要时。在计算机视觉中,JPG通常用于像素精度不太关键的数据集,如目标检测或分类任务。

劣势:

JPG的有损特性会导致一些数据丢失,特别是在多次保存后,这可能会随时间降低图像质量。它还不支持透明度,限制了其在某些应用中的使用。

在OpenCV中的使用:

import cv2


# Reading a JPG image
image = cv2.imread("example.jpg")


# Saving as JPG with quality control (lossy compression)
cv2.imwrite("output.jpg", image, [cv2.IMWRITE_JPEG_QUALITY, 90])  # Quality range: 0 to 100, 100 is best quality

3. WEBP(网络图片格式)

9e1b41b3db40ab9caf710e3523f3fd1d.png

来自谷歌的官方文档

 https://developers.google.com/speed/webp/docs/compression 

优势:

WEBP提供有损和无损压缩,使其成为一个多功能的选择。它结合了PNG的透明度和JPG的压缩效率,这在需要高性能和存储效率的计算机视觉应用中是有利的。对于机器学习,使用WEBP可以节省存储空间并加快数据集加载速度,特别是对于大型数据集。

劣势:

尽管其效率高,WEBP仍然不是所有平台或旧版软件都支持的。然而,对于使用现代库的图像处理工作流程,WEBP是一个越来越强大的选择。

我还推荐查看谷歌进行的一项比较Webp和Jpg的研究。 https://developers.google.com/speed/webp/docs/webp_study 

在OpenCV中的使用:

# Reading a WEBP image
image = cv2.imread("example.webp", cv2.IMREAD_UNCHANGED)


# Saving as WEBP with compression control
# Lossless compression (quality=100) vs. lossy compression (quality < 100)
cv2.imwrite("output_lossy.webp", image, [cv2.IMWRITE_WEBP_QUALITY, 75])    # Lossy with quality at 75
cv2.imwrite("output_lossless.webp", image, [cv2.IMWRITE_WEBP_QUALITY, 100]) # 100 enables lossless

实验

19537d8651825c26f79822832e26306b.jpeg

作者的结果

e47c7213b6553321c07c87a4e34aad4b.jpeg

作者的结果

702d8559d0167d427e8d7472e66969ba.jpeg

作者的结果

比较总结

  • PNG:非常适合无损压缩和透明度;最适合像素精确的应用,但可能会占用大量存储空间。

  • JPG:这种格式适用于可以接受一定质量损失的自然图像。它非常适合大型数据集,但不适合需要透明度或精确像素保留的图像。

  • WEBP:多功能,提供有损和无损选项。它在保持高质量的情况下有效减少存储使用,非常适合需要快速访问和适度压缩的计算机视觉应用。

选择正确的图像格式和设置对于最大化计算机视觉和图像处理工作流程的效率和性能至关重要。无论你是在训练模型、分析数据还是部署应用,了解这些差异都允许你针对质量、速度和存储进行优化——从而实现更强大、更高效的系统。

·  END  ·

🌟 想要变身计算机视觉小能手?快来「小白玩转Python」公众号!

回复Python视觉实战项目,解锁31个超有趣的视觉项目大礼包!🎁

494bfd1fcb047f78c29140778a32f2b4.png

本文仅供学习交流使用,如有侵权请联系作者删除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值