QImage に表示しようとしている画像があります。
これは、rows*cols イメージを生成するコードのスニペットです。
rgbMapped[row][col * 3] = red;
rgbMapped[row][col * 3 + 1] = green;
rgbMapped[row][col * 3 + 2] = blue;
ご覧のとおり、私のデータ バッファは「行の高さ」で、「列 * 3 の幅」です。
rgbMapped は unsigned char** 配列です。QTコードに戻ると、次のようになります。
QImage *qi = new QImage(getWidth(), getHeight(), QImage::Format_RGB888);
for (int h = 0; h< getHeight(); h++){
memcpy(qi->scanLine(h), rgbMapped[h], getWidth()*3);
}
QPixmap p(QPixmap::fromImage(*qi,Qt::ColorOnly));
if(scene.items().contains(item)){
scene.removeItem(item);
}
item = new ImagePixmapItem(p);
scene.addItem(item);
ui->graphicsView->setScene(&scene);
ui->graphicsView->show();
ImagePixMapItem は、いくつかのマウス イベントをインターセプトできるようにするために作成した QGraphicsPixmapItem ですが、ペイント関数などを操作することはありません。
このコードを実行すると、私のイメージに似たイメージとして返されますが、3 つのコピー (1 つは緑がかった色、もう 1 つは黄色がかった色、もう 1 つは目立つ紫がかった色) があります。
この 3 つのデータを重ね合わせたら、おそらく正しいイメージになるのではないでしょうか。