0

フォトメトリック解釈が「monochrome2」で、ピクセル形式が unsigned int 16 または uint16 の gdcm イメージ リーダーから読み取った dicom イメージを変換しようとしました。次のコードを試しましたが、必要なイメージが得られません。助けてください。

        QVector<QRgb> table(2);
        for(int c=0;c<256;c++)
        {
            table.append(qRgb(c,c,c));
        }
        std::cout << "this is the format UINT16" << std::endl;
        int size = dimX*dimY*2; // length of data in buffer, in bytes
        quint8 * output = reinterpret_cast<quint8*>(buffer);
        const quint16 * input = reinterpret_cast<const quint16*>(buffer);
        do {
            *output++ = (*input) >> 8;
        } while (size -= 2);
        imageQt = new QImage(output, dimX, dimY, QImage::Format_Indexed8);
        imageQt->setColorTable(table);

よろしく

4

1 に答える 1

0

私はあなたの問題を見ていると思います。データを出力に書き込み、ポインタを出力にインクリメントします。

次に、ビットマップの最後を指す QImage を作成します。

次のことを行う必要があります。

imageQt = new QImage( reinterpret_cast< uchar* >( buffer ), dimX, dimY, QImage::Format_Indexed8);

編集:また、入力ポインタを進めません。

内部ループを次のように変更する必要があります。

*output++ = (*input++) >> 8;
于 2012-06-26T09:24:59.070 に答える