2011-12-23 8 views
2

現在、QtライブラリをKinect APIと組み合わせて、QImage(QLabelで示されている)のセンサーからのビデオを表示しようとしています。Qt&Kinect:BYTE * pBufferをQByteArrayまたはconst uchar *に変換するにはどうすればよいですか?

私のKinect処理ライブラリでは、ビデオセンサーからデータを受け取る関数が、BYTE *(RGB32値のものを指している)としてデータを出力しています。私のプログラムの別の小さなコーナーで

、私はスロット*そのバイトを受信し、次のようにRGB32データとQImageのを更新しようとします:

videoCanvas->loadFromData(reinterpret_cast<const uchar*>(pBuffer), QImage::Format_RGB32); 
pBufferが信号によりスロットに渡される

を前述のBYTE *である。

これは私のためには機能しません。画像が必要な灰色のボックスがまだ残っています。データタイプを調べてQImage :: Format_RGB32が正しいと思われるため、この問題がキャストにあると想像します。

どうすればよいですか? :)

答えて

2

loadFromDataあなたが渡すバッファには、画像の幅と高さを含むすべての必要な情報が含まれている必要があります。したがって、フォーマットはJPEGまたはPNGのようなものでなければならず、QImage::Format定数でなければなりません。

書かれたとして、それは「形式」の仕様だし、あなたが整数を渡しているため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の値を使用します。

関連する問題