2011-06-30 26 views
1

処理を実行するためにTIFF画像を読み取ろうとしています。理想的なのは、OpenCV構造でこのイメージをインポートできることですが、それを別の方法でアクセスできるようにすることも素晴らしいことです。TIFF画像にアクセス

私は

TIFF Directory at offset 0x2bb00 (178944) 
    Subfile Type: (0 = 0x0) 
    Image Width: 208 Image Length: 213 
    Resolution: 1, 1 
    Bits/Sample: 32 
    Sample Format: IEEE floating point 
    Compression Scheme: None 
    Photometric Interpretation: min-is-black 
    Orientation: row 0 top, col 0 lhs 
    Samples/Pixel: 1 
    Rows/Strip: 1 
    Planar Configuration: single image plane 

を取得した画像上tiffinfo実行した場合、私は1つの画素値にアクセスしたいです。画像はグレースケールで、そこに含まれるデータの範囲は0.0〜10372.471680です。

LibTIFF、Magick ++で試してみましたが、1つのピクセル値にアクセスできませんでした(ピクセルにループを作り、これらの値を画面に印刷しようとしました)。ここで

は私がオンラインの例からそれを得た、私が使用しようとしていますコードの一部です:

#include "tiffio.h" 
#include "stdio.h" 
int main() 
{ 
    TIFF* tif = TIFFOpen("test.tif", "r"); 
    if (tif) { 
     uint32 imagelength; 
     tsize_t scanline; 
     tdata_t buf; 
     uint32 row; 
     uint32 col; 

     TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &imagelength); 
     scanline = TIFFScanlineSize(tif); 
     buf = _TIFFmalloc(scanline); 
     for (row = 0; row < imagelength; row++) 
     { 
      int n = TIFFReadScanline(tif, buf, row, 0); 
     if(n==-1){ 
      printf("Error"); 
      return 0; 
     } 
      for (col = 0; col < scanline; col++) 
       printf("%f\n", buf[col]); 

      printf("\n"); 
     } 
     printf("ScanLineSize: %d\n",scanline); 
     _TIFFfree(buf); 
     TIFFClose(tif); 
    } 
} 

私は

のgcc test.cの-ltiff -oテストでそれをコンパイル

私はそれを実行したとき、私は

test.c: In function ‘main’: 
test.c:24: warning: dereferencing ‘void *’ pointer 
test.c:24: error: invalid use of void expression 
0123を取得

ヒント?御時間ありがとうございます。

+0

はたぶん、あなたはあなたのソースコードを投稿する必要があり、さもなければ私たちはあなたにそれについてのヒントを与えることができないのですか? ;) – Constantinius

+0

私はオンラインで見つけたいくつかのコードを追加しました。 tsize_tはvoidへのポインタです。私はこのコードを動作させようとしましたが、できませんでした。 – Danilo

+0

私はTiffチュートリアルを見ましたが、あなたのコードでエラーが見つかりません。コンパイラがエラーを記述する行24は何ですか? – Constantinius

答えて

1

関数_TIFFmalloc()のドキュメントを参照してください。標準のmallocのように動作する場合、voidポインタを返します。これは、24行目のbuf [col]文が正しく動作することが期待される場合に、特定の型にキャストする必要があります。あなたがでこれを修正する必要があり

-1

:右、

tdata_t *buf; 
buf =(tdata_t*) _TIFFmalloc(scanline); 
関連する問題