我目前正在将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是正确的。
我该如何处理? :)
答案 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
值...