Python 为什么openCV存储的文件比原始文件大(kB)?
我有两种不同方式加载和保存图像的代码——第一种是使用openCV,第二种是使用PILPython 为什么openCV存储的文件比原始文件大(kB)?,python,image,opencv,image-processing,python-imaging-library,Python,Image,Opencv,Image Processing,Python Imaging Library,我有两种不同方式加载和保存图像的代码——第一种是使用openCV,第二种是使用PIL import cv2 from PIL import Image img = cv2.imread("/home/myname/png/image.png") cv2.imwrite("/home/myname/png/image_save.png", img) img = Image.open("/home/myname/png/image.png") img.save("/home/myname/png
import cv2
from PIL import Image
img = cv2.imread("/home/myname/png/image.png")
cv2.imwrite("/home/myname/png/image_save.png", img)
img = Image.open("/home/myname/png/image.png")
img.save("/home/myname/png/image_save_pil.png")
原始图像的大小为204.6 kB。openCV的结果为245.0kb,PIL的结果为204.6kb
为什么使用openCV保存的图像具有更大的大小?如果两个PNG由不同的库生成,则不能期望它们具有相同的大小 文件规范定义了文件的结构,因此每个人都知道在哪里写入信息以及在哪里查找信息。如何编码和解码数据 很多东西都是可选的,比如元数据、压缩率等等 这就像在两个不同的家庭里抚养同卵双胞胎
您可以尝试为图像写入功能设置相同的参数,但即使如此,也不可能获得完全相同的文件大小。大小差异与ZLIB压缩设置有关
- 默认情况下,PIL使用的最大值为9(请参阅)
- 默认情况下,OpenCV仅使用3(请参见)
你有没有读过关于压缩参数的书?
cv2.imwrite('image.png', img, [int(cv2.IMWRITE_PNG_COMPRESSION), 9])