我正在加载图像并使用 cvSaveImage() 保存相同的图像但名称不同。保存后新保存的图像的大小会增加。谁能告诉我为什么以及如何避免它?这是我的代码:
诠释主要(){
IplImage* src = cvLoadImage("test.jpg", 0);
cvSaveImage("reTest.jpg", src);
return 0;
}
谢谢。
我正在加载图像并使用 cvSaveImage() 保存相同的图像但名称不同。保存后新保存的图像的大小会增加。谁能告诉我为什么以及如何避免它?这是我的代码:
诠释主要(){
IplImage* src = cvLoadImage("test.jpg", 0);
cvSaveImage("reTest.jpg", src);
return 0;
}
谢谢。
这是因为 OpenCV 中默认使用的 JPEG 压缩因子较低。以下是如何传递自定义压缩因子 - OpenCV cvSaveImage Jpeg Compression Factor。
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 不同的库。