2017-01-12 19 views
0

私は独自の画像フォーマットを持つソフトウェアを扱っています。 QT GUIにこれらのイメージの修正版を表示できる必要があります。 16ビット整数(ピクセルあたり16ビット)を返すメソッド(Image-> getpixel(x、y))があります。明確にするために、16ビット数はRGBカラーフォーマットを表していません。文字通り、撮影されている部分の特定の点(高さマップ)に対する測定値または寸法を表します。私は、画像内の次元(整数)の範囲を取り、色で表現するためにスケールを適用する必要があります。次に、その情報を使って、Qlabelに表示できるQPixmap用のイメージを構築する必要があります。ここに一般的な要点は...16ビット整数の画像をQPixmapに変換する方法

QByteArray Arr; 
unsigned int Temp; 
for (int N = 0; N < Image->GetWidth(); N++) { 
    for (int M = 0; M < Image->GetHeight(); M++) { 
     Temp = Image.GetPixel(N,M); 
     bytes[0] = (Temp >> 8) & 0xFF; 
     bytes[1] = Temp & 0xFF; 
     Arr.push_back(bytes[0]); 
     Arr.push_back(bytes[1]); 
    } 
} 

// Take the range of 16 bit integers. Example (14,982 to 16,010) 
// Apply a color scheme to the values 
// Display the image 
QPixmap Image2; 
Image2.loadFromData(Arr); 
ui->LabelPic->setPixmap(Image2); 

思考?

このスクリーンショットは、私が複製しようとしているものの例です。画像の色付けは、画像内の基礎となるデータに固有のものではないことに注意することが重要です。これは、高さの値を拡大し、整数の範囲に配色を適用するアプリケーションの結果です。

enter image description here

答えて

0

。実際のフォーマットとして

Algorithm to convert any positive integer to an RGB value

、Iは、ヒートマップを作成するQImageの:: Format_RGB888に16ビットの整数に変換することを選びました。これは、整数の範囲にスケールを適用し、スケールを使用して異なる色の式をプロットすることによって達成されました。

1

上記説明によると(要求されたように)推測または考えられている以下のように独自の画像フォーマットの情報が限られている:私はここに答えの部分を発見

QImage img(/*raw image data*/ (const uchar*) qbyteArr.data(), 
    /*columns*/ width, /*height*/ rows, 
    /*bytes per line*/ width * sizeof(uint16), 
    /*format*/ QImage::Format_RGB16); // the format is likely matching the request 

QPixpam pixmap(img);     // if the pixmap is needed 
+0

私はこの方法を知っていますが、実際の問題は16ビットのunsigned intからconst uchar *にデータを取得する方法です。新しいコードで私の投稿を更新しました。どう考えているか教えてください。 – bluebass44

+0

ucharは単なるバイトであり、ここへのポインタはグラフィックスデータバッファの先頭へのポインタです。そのため、reinterpret_castまたはそれ以前のCスタイルのキャストがそこにあります。あなたはソースバッファを指し示すことを試みるかもしれません、そして、私が詳細を知らない限り、あなたがそのコードでしていることは私には説明できません。 – AlexanderVX

+0

私は徐々に収集している新しい情報を投稿に更新しました。文書がひどく欠けているので、不完全な情報を許す必要があります。あなたが見たい他の情報は? – bluebass44

関連する問題