我正在尝试更多地理解图像,但遇到了很多麻烦。通过使用 matlab,我有使用 imread('test.tif') 的经验,并获得了一个漂亮的行与列矩阵,其中每个像素的强度为整数。因此,一个 720 x 250 的图像将给出一个 720 x 250 的矩阵,其中每个单元格包含像素的强度,范围为 0-255(取决于数据类型)。所以,0 是黑色,255 是白色。
这很简单,也很有意义。现在我正在尝试使用 libtiff,我真的很挣扎。我想做同样的事情——访问那些像素,但我就是做不到。
我有以下代码:
int main(int argc, char *argv[]){
TIFF* tif = TIFFOpen( argv[1], "r");
FILE *fp = fopen("test2.txt", "w+");
if (tif) {
int * buf;
tstrip_t strip;
uint32* bc;
uint32 stripsize;
TIFFGetField( tif, TIFFTAG_STRIPBYTECOUNTS, &bc);
stripsize = bc[0];
buf = _TIFFmalloc(stripsize);
for(strip = 0; strip < TIFFNumberOfStrips(tif); strip++ ) {
if( bc[strip] > stripsize) {
buf = _TIFFrealloc(buf, bc[strip]);
stripsize = bc[strip];
}
TIFFReadRawStrip(tif, strip, buf, bc[strip]);
}
int i;
for (i=0; i<stripsize; i++) {
if ( i % 960 ==0 )
fprintf(fp, "\n");
fprintf(fp,"%d ", buf[i]);
}
_TIFFfree(buf);
TIFFClose(tif);
}
exit(0);
}
但是我得到了完全没有意义的结果——完全是数字。与我在 matlab 中加载图像时看到的数字完全不同。
我怎样才能简单地访问像素值并查看它们?
非常感谢。