1

我正在加載一個圖像,只是使用cvSaveImage()保存相同的圖像,但使用不同的名稱。保存新保存圖像的大小後,會增加。誰能告訴我爲什麼以及如何避免它?這裏是我的代碼:openCV cvSaveImage()增加圖像的大小

INT主要(){

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

cvSaveImage("reTest.jpg", src); 

return 0; 

}

感謝。

+0

'jpg'是壓縮的有損格式,所以不可能解碼,然後重新編碼以獲得完全相同的數據。壓縮率是可變的,所以有可能原始文件的保存速度比第二次保存的速率更高。我假設在openCV中可能有選項來控制它。 –

回答

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