Python OpenCV:压缩后图像大小增加

Python OpenCV:压缩后图像大小增加,python,opencv,python-imaging-library,image-compression,Python,Opencv,Python Imaging Library,Image Compression,我试图使用OpenCV的quality=90参数来比较压缩前后一组图像的大小。但是在压缩之前,我想把它们裁剪成一个固定的大小。但是,我不明白为什么裁剪后的图像平均大小比裁剪+压缩后的图像小 以下是我正在做的: 进口cv2 进口PIL 从pathlib导入路径 图像路径=[…] 裁剪的尺寸=0 压缩的\u imgs\u大小=0 作物图像 对于图像路径中的原始图像路径: 裁剪路径=裁剪路径+原始路径 PIL.Image.openorig\u img\u path.crop0,0256256.conv

我试图使用OpenCV的quality=90参数来比较压缩前后一组图像的大小。但是在压缩之前,我想把它们裁剪成一个固定的大小。但是,我不明白为什么裁剪后的图像平均大小比裁剪+压缩后的图像小

以下是我正在做的:

进口cv2 进口PIL 从pathlib导入路径 图像路径=[…] 裁剪的尺寸=0 压缩的\u imgs\u大小=0 作物图像 对于图像路径中的原始图像路径: 裁剪路径=裁剪路径+原始路径 PIL.Image.openorig\u img\u path.crop0,0256256.convert'RGB.savecropped\u img\u path 裁剪的\u imgs\u size+=路径裁剪的\u img\u path.stat.st\u size 压缩裁剪图像 dest_path=q90_+裁剪的_img_路径 cv2.imwritedest\u路径,cv2.imreadcrapped\u img\u路径,[intcv2.IMWRITE\u JPEG\u质量,90] 压缩的\u imgs\u size+=最路径的\u path.stat.st\u size 预期:压缩的尺寸<压缩的尺寸 实际:压缩尺寸>压缩尺寸
我遗漏了什么?

首先,您正在使用PIL.save保存作物。正如您在上看到的,默认质量=75:

该方法支持以下选项:

质量:图像质量,从1最差到95最佳。默认值为75。应避免超过95的数值;100将禁用JPEG压缩算法的某些部分,并导致大文件的图像质量几乎没有任何提高


然后,使用cv2.imwrite passing quality=90。因此,您得到的是预期的行为。

首先,使用PIL.save保存作物。正如您在上看到的,默认质量=75:

该方法支持以下选项:

质量:图像质量,从1最差到95最佳。默认值为75。应避免超过95的数值;100将禁用JPEG压缩算法的某些部分,并导致大文件的图像质量几乎没有任何提高


然后,使用cv2.imwrite passing quality=90。因此,您得到的是预期的行为。

您可以附加一个示例输入图像和裁剪坐标吗?另外,文件大小的实际差异是什么?我使用Oxford pets数据集作为图像路径。使用上述代码,剪切图像的平均大小约为14KB,压缩大小约为20KB。在共享其他度量值时,您是否可以附加示例输入图像和裁剪坐标?另外,文件大小的实际差异是什么?我使用Oxford pets数据集作为图像路径。使用上述代码,剪切图像的平均大小约为14KB,压缩大小约为20KB。在Thank Berriel分享了其他指标。所以你建议我改为PIL.Image.openorig\u img\u path.crop0,0256256.convert'RGB'。savecropped\u img\u path,裁剪质量=90?PIL和cv2使用相同的量化表吗?我只是担心使用两个库是否会有任何副作用。@Nitin在质量上,你将保存你的作物基本上是你的决定。我不知道你的要求。无论如何,我建议你只使用一个图书馆;问题肯定少了。如果这回答了你的问题,考虑标记为答案:基本上,我希望作物功能只是庄稼,而不是改变质量。然后我想在后面的步骤中将其与compress进行比较。为了实现这一点,在裁剪过程中设置quality=100是否合理?@Nitin我认为以未压缩格式保存(如PNG)更合理。谢谢Berriel。所以你建议我改为PIL.Image.openorig\u img\u path.crop0,0256256.convert'RGB'。savecropped\u img\u path,裁剪质量=90?PIL和cv2使用相同的量化表吗?我只是担心使用两个库是否会有任何副作用。@Nitin在质量上,你将保存你的作物基本上是你的决定。我不知道你的要求。无论如何,我建议你只使用一个图书馆;问题肯定少了。如果这回答了你的问题,考虑标记为答案:基本上,我希望作物功能只是庄稼,而不是改变质量。然后我想在后面的步骤中将其与compress进行比较。要实现这一点,在裁剪过程中设置quality=100是否合理?@Nitin我认为以未压缩格式保存(如PNG)更合理。