Я пытаюсь понять образы еще немного, и у меня много проблем. Используя 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.
Как я могу просто получить доступ к значениям пикселей и посмотреть на них?
Большое спасибо.