Qt& Kinect:如何将BYTE * pBuffer转换为QByteArray或const uchar *?

时间:2011-12-23 01:48:41

标签: c++ qt kinect qbytearray

我目前正在将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是正确的。

我该如何处理? :)

1 个答案:

答案 0 :(得分: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值...

的地方