【问题标题】:openCV cvSaveImage() increases the size of imageopenCV cvSaveImage() 增加图像的大小
【发布时间】:2013-11-28 16:29:42
【问题描述】:

我正在加载图像并使用 cvSaveImage() 保存相同的图像但名称不同。保存后新保存的图像的大小会增加。谁能告诉我为什么以及如何避免它?这是我的代码:

int main(){

IplImage* src = cvLoadImage("test.jpg", 0);

cvSaveImage("reTest.jpg", src);

return 0;

}

谢谢。

【问题讨论】:

  • jpg 是一种压缩的有损格式,因此无法解码然后再次编码以获得完全相同的数据。压缩比是可变的,因此原始文件的保存速度可能高于您第二次保存的速度。我假设 openCV 中可能有一些选项可以控制这一点。

标签: c++ opencv image-processing computer-vision computer-science


【解决方案1】:

JPEG 中结合了不同的压缩和编码方法。 很可能您的原始图像使用了与 cvSaveImage 的标准 openCV 参数化不同的压缩/编码。

试试这个:

IplImage* src = cvLoadImage("test.jpg", 0);
cvSaveImage("reTest.jpg", src);
IplImage* reSrc = cvLoadImage("reTest.jpg",0);
cvSaveImage("reTest2.jpg", reSrc);

如果reTest.jpgreTest2.jpg 具有相同的大小,openCV 不会增加文件大小,而只是使用不同的压缩级别或某事。 您必须找出原始文件的压缩级别和编码,并使用这些相同的参数保存它,可能使用与 openCV 不同的库。

【讨论】:

    【解决方案2】:

    这是因为 OpenCV 中默认使用的 JPEG 压缩因子较低。以下是如何传递自定义压缩因子 - OpenCV cvSaveImage Jpeg Compression Factor

    【讨论】:

      猜你喜欢
      • 2012-11-22
      • 2019-12-01
      • 1970-01-01
      • 2015-11-25
      • 1970-01-01
      • 1970-01-01
      • 2020-10-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多