Qt & Kinect: как преобразовать BYTE * pBuffer в QByteArray или const uchar*?
В настоящее время я объединяю библиотеку Qt с API Kinect и пытаюсь показать видео с сенсора в QImage (показываемом QLabel).
В моей библиотеке обработки Kinect функция, которая получает данные от видеосенсора, выдает данные в виде байта* (указывая на что-то со значениями RGB32).
В другом маленьком углу моей программы у меня есть слот, принимающий этот байт* и пытающийся обновить QImage с данными RGB32 как образом:
videoCanvas->loadFromData(reinterpret_cast<const uchar*>(pBuffer), QImage::Format_RGB32);
Где pBuffer передается в слот сигналом, и является вышеупомянутым байтом*.
Это не работает для меня, и я все еще застрял с серой коробкой, где должно быть изображение. Я предполагаю, что проблема заключается в приведении, потому что я исследовал тип данных и, по-видимому, QImage::Format_RGB32 является правильным.Как мне поступить с этим? :)
1 ответ:
loadFromData
ожидает, что буфер, который вы передаете, будет содержать всю необходимую информацию об изображении...включая его ширину и высоту. Поэтому формат должен быть таким, как JPEG или PNG, а не константойQImage::Format
.На самом деле, я удивлен, что строка составлена так, как написано...потому что
loadFromData
ожидает символ* для спецификации "формата", и вы передаете целое число: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
...