QTアプリケーションをVNCで実行しようとしていますが、いくつかの違いがあります。
私の画像はQImageアイテムに読み込まれ、RGB画像です。グレースケール画像のみを処理したいので、次のようなグレースケール画像を作成しようとしました。
QRgb col;
int gray;
for (int i = 0; i < imwidth; ++i)
{
for (int j = 0; j < imheight; ++j)
{
col = chip.pixel(i, j);
gray = qGray(col);
chip.setPixel(i, j, qRgb(gray, gray, gray));
}
}
チップは私のQImageです
次に、チップの生データを取得するために、次を使用します。
int chipDataLength = chip.bytesPerLine();
qDebug("Chip Width: %i", imwidth);
qDebug("Chip height: %i", imheight);
qDebug("Bytes per line : %i",chipDataLength);
int bpp = chipDataLength/imwidth;
qDebug("Size uchar: %i", sizeof(unsigned char) );
qDebug("Size of qRgb: %i", sizeof(qRgb(1,1,1)));
unsigned char * tempData = (unsigned char *)malloc(imheight*chipDataLength*sizeof(unsigned char));
unsigned char * oneBandData = (unsigned char *)malloc(imheight*imwidth*sizeof(unsigned char));
tempData = chip.bits();
for (int i = 0; i < imheight; i++)
{
for (int j = 0; j < imwidth; j++)
{
oneBandData[i*imwidth+j] = tempData[i*chipDataLength + j*bpp];
}
}
このコードをSSH接続で実行すると(またはサーバーに座っているだけで)、コードは正常に機能し、oneBandDataには期待値が含まれています。VNCで実行しようとすると、oneBandDataが正しくありません。
オプション-qgraphicssystemラスターを使用しようとしましたが、それでも歪んだ画像が表示されます。
また、chipDataLengthがSSHでは4 * imwidth、VNCでは2 * imwidthになるため、そのbpp変数が追加されました。なぜこれが違うのですか?このコードを双方向で機能させるにはどうすればよいですか?