2

現在、QtライブラリをKinect APIと組み合わせて、センサーからのビデオをQImage(QLabelで表示)に表示しようとしています。

私のKinect処理ライブラリでは、ビデオセンサーからデータを受信する関数が、データをBYTE *(RGB32値を持つものを指す)として出力しています。

私のプログラムの別の小さなコーナーに、そのBYTE *を受信し、次のようにRGB32データでQImageを更新しようとしているスロットがあります。

videoCanvas->loadFromData(reinterpret_cast<const uchar*>(pBuffer), QImage::Format_RGB32);

ここで、pBufferはシグナルによってスロットに渡され、前述のBYTE*です。

これは私にはうまくいきません、そして私はまだ画像があるべきところに灰色のボックスで立ち往生しています。私はデータ型を調査し、明らかにQImage :: Format_RGB32が正しいので、問題はキャストにあると思います。

これをどのように進めればよいですか?:)

4

1 に答える 1

2

loadFromData渡すバッファには、画像の幅や高さなど、画像に関する必要なすべての情報が含まれている必要があります。QImage::Formatしたがって、形式は定数ではなく、JPEGやPNGのようなものにする必要があります。

実際、この行が記述どおりにコンパイルされていることに驚いています... loadFromData「フォーマット」の指定にchar *が必要であり、整数を渡しているためです。

http://developer.qt.nokia.com/doc/qt-4.8/qimage.html#Format-enum

データの生のバイト配列があり、他のソースからの幅と高さがわかっている場合は、そのために適切なQImageコンストラクターを使用することをお勧めします。

http://developer.qt.nokia.com/doc/qt-4.8/qimage.html#QImage-5

ここで値を使用しQImage::Formatます...

于 2011-12-23T02:39:54.763 に答える