Libtiff: как я могу получить значения пикселей ИЛИ как я могу конвертировать TIFF-файлы в текстовые файлы - PullRequest
0 голосов
/ 04 февраля 2011

Я пытаюсь заставить libtiff считывать файлы tiff, состоящие из одной полосы размером примерно 500x500 32-битных пикселей, используя метод TIFFReadScanline (tif, buf, row) .Это дает мне строки tdata_t (??).

Как я могу записать этот буфер в виде текстового файла или получить доступ к значениям пикселей (должно быть удвоено)?

Мой код выглядит так:

TIFF* tif = TIFFOpen(c_str2, "r");
uint32 imagelength;
tdata_t buf;
uint32 row;

TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &imagelength);
buf = _TIFFmalloc(TIFFScanlineSize(tif));

for (row = 0; row < imagelength; row++){
        TIFFReadScanline(tif, buf, row);
        myfile << buf << endl;
}

В последней строке я пытаюсь записать весь буфер в текстовый файл, но нет двойных значений, кроме Hex-значений.Когда я заменяю буфер tdata_t символьным буфером, появляется символ ASCII.Я думаю, мне следует преобразовать буфер tdata_t в двойной или символьный буфер, но как?

Это не должен быть порядок байтов, поскольку libtiff обрабатывает это автоматически, я думаю.

Любые предложения приветствуются!Спасибо за помощь, желаю всем хороших выходных!

1 Ответ

1 голос
/ 04 февраля 2011

<< заметил, что вы выводите типы tdata_t, которые, вероятно, являются целыми числами, и помещает их в шестнадцатеричный формат, чтобы их было легче читать. </p>

Просто зациклите все элементы в строке (в buf) и выведите их как float с помощью << (float) buf [element] </p>

...