いくつかの画像を表示するために NITF ファイルに書き込んでいたレガシー コードがいくつかあります。従来のコードでは、LUT が使用されているかのように見え、一度に 1 行ずつ NITF ファイルに書き出すコードのセクションがあり、その行の値は次のように計算されました。
// convert RGB to LUT values
unsigned char *lutData = new unsigned char[numBytes/3];
for (unsigned j = 0 ; j < numBytes/3 ; j++)
lutData[j] = (unsigned char) stuff;
data は元の符号なし文字の配列でした。
だから今、私はそのデータ配列を取得して、GUI の QImage に出力しようとしています。
NITF では、サイズが「rows x cols」の LUT データのブロックがあったように思えますよね? そこで、その lut データの配列を作成しました。
unsigned char *lutData = new unsigned char[imwidth * imheight];
QImage *qi = new QImage(imwidth,imheight, QImage::Format_Indexed8);
for (int i = 0 ; i < imheight ; i++)
{
#pragma omp parallel for
for (int j = 0 ; j < imwidth ; j++)
{
lutData[i*imwidth + j] = stuff;
}
}
そして、次のようにqimageにデータを入力しようとしました:
for (int i = 0 ; i < imheight ; i++)
{
#pragma omp parallel for
for (int j = 0 ; j < imwidth ; j++)
{
qi->setPixel(j,i,qRgb(lutData[i*imwidth + j],lutData[i*imwidth + j],lutData[i*imwidth + j]));
}
}
ただし、これは多かれ少なかれ、実際のデータではなく、グレースケールの画像を提供するだけのようです。
私は何を間違っていますか?
ありがとう!