Я загружаю изображение и просто сохраняю то же изображение, но с другим именем, используя cvSaveImage (). После сохранения размер вновь сохраненного изображения увеличивается. Может кто-нибудь сказать мне, почему и как этого избежать ?? вот мой код:
int main () {
IplImage* src = cvLoadImage("test.jpg", 0);
cvSaveImage("reTest.jpg", src);
return 0;
}
Благодарю.
Существуют различные методы сжатия и кодирования в формате JPEG.
Скорее всего, ваше исходное изображение использовало другое сжатие / кодирование, чем стандартная параметризация openCV для cvSaveImage.
Попробуй это:
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 не увеличивает размер файла, а просто использует другой уровень сжатия или sth.
Вам нужно будет выяснить уровень сжатия и кодировку исходного файла и сохранить его с теми же параметрами, возможно, с другой библиотекой, чем openCV.
Это из-за низкого коэффициента сжатия JPEG, используемого по умолчанию в OpenCV. Вот как передать пользовательский коэффициент сжатия — OpenCV cvSaveImage Коэффициент сжатия JPEG .