LibTIFF - 将16位图像读入阵列?

时间:2017-02-16 17:00:55

标签: image io tiff libtiff

在LibTIFF文档中,没有提及或如何读取16位RGB图像的示例。显然,读取16位需要使用扫描线功能。经过几次尝试后,我无法解决这个问题。

根据this post

  

如果您想要处理所有类型的TIFF图像而不使用   TIFFReadRGBAImage然后你必须检测图像格式并使用   低级接口,如TIFFReadEncodedStrip和   TIFFReadEncodedTile

我的最终目标是能够获得R,G和B通道的16位值,以及实际知道它们在图像中的位置。

在libtiff的文档中,他们使用条带编码为eading提供了此示例代码,但是,它们没有解释您获得的buf中的内容或如何使用它。任何人都可以解释我应该从那里读取16位值吗?另外,有没有办法一致地确定条带顺序,以便我的读取图像呈现正确?

TIFF* tif = TIFFOpen("myfile.tif", "r");
if (tif) {
tdata_t buf;
tstrip_t strip;

buf = _TIFFmalloc(TIFFStripSize(tif));
for (strip = 0; strip < TIFFNumberOfStrips(tif); strip++)
    TIFFReadEncodedStrip(tif, strip, buf, (tsize_t) -1);
_TIFFfree(buf);
TIFFClose(tif);
}

0 个答案:

没有答案