Libtiff:我如何获取像素值或如何将TIFF文件转换为文本文件

时间:2011-02-04 15:53:33

标签: c++ image-processing character-encoding libtiff

我正在尝试让libtiff使用方法 TIFFReadScanline(tif,buf,row)读出包含一条大约500x500 32位像素的tiff文件。这给了我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-Values。当我用char缓冲区替换tdata_t缓冲区时,有ASCII符号乱码。我想我应该将tdata_t缓冲区转换为double或char缓冲区但是如何?

它不应该是字节顺序,因为我认为libtiff会自动处理这个。

欢迎任何建议!感谢您的帮助,祝您周末愉快!

1 个答案:

答案 0 :(得分:1)

&lt;&lt;注意到你输出的tdata_t类型可能是整数,并将它们放入十六进制以便于阅读。

只需遍历行中的所有元素(在buf中)并将其作为浮点数输出,其中&lt;&lt; (浮点)的buf [元件]