openCV cvSaveImage()增加了图像的大小

时间:2013-11-15 10:02:49

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

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

int main(){

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

cvSaveImage("reTest.jpg", src);

return 0;

}

感谢。

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:4)

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不同的库。