openCV cvSaveImage () увеличивает размер изображения

Я загружаю изображение и просто сохраняю то же изображение, но с другим именем, используя cvSaveImage (). После сохранения размер вновь сохраненного изображения увеличивается. Может кто-нибудь сказать мне, почему и как этого избежать ?? вот мой код:

int main () {

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

cvSaveImage("reTest.jpg", src);

return 0;

}

Благодарю.

1

Решение

Существуют различные методы сжатия и кодирования в формате 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.

4

Другие решения

Это из-за низкого коэффициента сжатия JPEG, используемого по умолчанию в OpenCV. Вот как передать пользовательский коэффициент сжатия — OpenCV cvSaveImage Коэффициент сжатия JPEG .

4

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector