我正在加载一个图像,只是使用cvSaveImage()保存相同的图像,但使用不同的名称。保存新保存图像的大小后,会增加。谁能告诉我为什么以及如何避免它?这里是我的代码:openCV cvSaveImage()增加图像的大小
INT主要(){
IplImage* src = cvLoadImage("test.jpg", 0);
cvSaveImage("reTest.jpg", src);
return 0;
}
感谢。
我正在加载一个图像,只是使用cvSaveImage()保存相同的图像,但使用不同的名称。保存新保存图像的大小后,会增加。谁能告诉我为什么以及如何避免它?这里是我的代码:openCV cvSaveImage()增加图像的大小
INT主要(){
IplImage* src = cvLoadImage("test.jpg", 0);
cvSaveImage("reTest.jpg", src);
return 0;
}
感谢。
在JPEG中有不同的压缩和编码方法。 对于cvSaveImage,很可能您的原始图像使用与标准openCV参数化不同的压缩/编码。
试试这个:
IplImage* src = cvLoadImage("test.jpg", 0);
cvSaveImage("reTest.jpg", src);
IplImage* reSrc = cvLoadImage("reTest.jpg",0);
cvSaveImage("reTest2.jpg", reSrc);
如果reTest.jpg
和reTest2.jpg
具有相同的大小,OpenCV的不增加文件大小,但只是使用不同的压缩级别或某事。 您必须找出原始文件的压缩级别和编码,并使用这些相同的参数进行保存,可能使用与openCV不同的库。
这是因为在OpenCV中默认使用的JPEG压缩系数较低。以下是如何传递自定义压缩因子 - OpenCV cvSaveImage Jpeg Compression Factor。
是的,谢谢。 – danishansari
'jpg'是压缩的有损格式,所以不可能解码,然后重新编码以获得完全相同的数据。压缩率是可变的,所以有可能原始文件的保存速度比第二次保存的速率更高。我假设在openCV中可能有选项来控制它。 –