【问题标题】:Qt & Kinect: How do I convert BYTE* pBuffer to a QByteArray or const uchar*?Qt & Kinect:如何将 BYTE* pBuffer 转换为 QByteArray 或 const uchar*?
【发布时间】:2012-01-26 13:01:55
【问题描述】:

我目前正在将 Qt 库与 Kinect API 相结合,并尝试在 QImage 中显示来自传感器的视频(由 QLabel 显示)。

在我的 Kinect 处理库中,从视频传感器接收数据的函数将数据作为 BYTE* 发出(指向具有 RGB32 值的东西)。

在我程序的另一个小角落,我有一个插槽接收 BYTE* 并尝试使用 RGB32 数据更新 QImage,如下所示:

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

其中pBuffer是由信号传入slot的,就是前面提到的BYTE*。

这对我不起作用,我仍然被图像应该在的灰色框卡住。我想问题出在铸造上,因为我研究过数据类型,显然 QImage::Format_RGB32 是正确的。

我应该如何处理这个? :)

【问题讨论】:

    标签: c++ qt kinect qbytearray


    【解决方案1】:

    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 值的地方...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-23
      • 2017-06-16
      • 1970-01-01
      • 2014-12-10
      • 2019-04-25
      • 2016-08-14
      • 2017-12-13
      • 1970-01-01
      相关资源
      最近更新 更多