2011-12-23 134 views
2

我目前將Qt庫與Kinect API結合起來,並嘗試在QImage中顯示來自傳感器的視頻(由QLabel顯示)。Qt&Kinect:如何將BYTE * pBuffer轉換爲QByteArray或const uchar *?

在我的Kinect處理庫中,從視頻傳感器接收數據的功能是以BYTE *(指向RGB32值的東西)發送數據。

在我的程序的另一個小角落裏,我有一個插槽接收BYTE *,並試圖與RGB32數據更新的QImage如下:

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

當p緩衝器通過信號傳遞到插槽,並且是前面提到的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值...