Я использую opencv для обрезки файлов tif, все в порядке, кроме сохранения изображения в файл - opencv всегда использует сжатие LZW, но мне не нужно сжатие полученных файлов, я ценю помощь opencv в сохранении моих место на диске, но сейчас не время для этого.
Так есть ли способ сохранить файлы tif с определенной схемой сжатия (включая отсутствие сжатия) или нет?
К исходным изображениям не применяется схема сжатия, и я использую ROI для выбора области и SaveImage для сохранения в целевой файл. Любая помощь приветствуется!
Есть ли способ установить конкретную схему сжатия при сохранении файла tiff в opencv?
Ответы (2)
Уровень сжатия TIFF жестко запрограммирован и не может быть изменен во время выполнения. Если вы компилируете OpenCV на своем компьютере, вы можете редактировать уровень сжатия в этом файле.
3rdparty/libtiff/tiff.h
вы найдете эту строку:
#define COMPRESSION_LZW 5 /* Lempel-Ziv & Welch */
Надеюсь, это поможет.
person
fireant
schedule
18.04.2012
Мех, это нехорошо, я проверю это через день или два, у меня нет возможности скачать исходники прямо сейчас, так что это займет некоторое время. Спасибо!
- person cookieMonster; 18.04.2012
@fireant, вы знаете, где в исходниках OpenCV нужно менять жестко закодированный метод сжатия? Упомянутый вами
3rdparty/libtiff/tiff.h
является частью самого libtiff и содержит определения для различных методов сжатия, включая #define COMPRESSION_CCITT_T6 4 /* CCITT T.6 (TIFF 6 name) */
. Итак, на самом деле нам нужно найти, где в OpenCV использование этих определений жестко запрограммировано.
- person Alexander Abakumov; 17.06.2015
@ alexander-abakumov Я обновил ответ, посмотрите, если это то, что вы ищете.
- person fireant; 17.06.2015
@fireant, спасибо! Это точно такая же строчка, которую я изменил несколько часов назад :)
- person Alexander Abakumov; 17.06.2015
В OpenCV 3 вы можете предоставить вектор параметров для изменения таких вещей, как сжатие или количество строк на полосе, как в:
vector<int> params = {
259, 1, // No compression, turn off default LZW
279, 64 // Rows per strip
};
imwrite("image.tiff", myImage, params);
person
Jay Borseth
schedule
09.12.2015
К сожалению, сохранить изображение tiff CCITTG4 не удается. Наверное потому, что Мат - это как минимум 8-битная матрица.
- person Xvolks; 25.01.2017