У меня есть формат «rgb8» msg доставляется через подписку на тему ROS. Как создать QImage из него и позволить qml Image отображать на нем изображение? В настоящее время я работаю над следующим фрагментом кода.Совместимость формата изображения между ROS QImage
QImage *VideoPlayer::Mat2QImage(cv::Mat const& src)
{
QImage *imgPtr = new QImage((const uchar *) src.data,
src.cols, src.rows, src.step, QImage::Format_RGB888);
imgPtr->bits();
return imgPtr;
}
void VideoPlayer::imageCallback(const sensor_msgs::ImageConstPtr& msg)
{
static int count = 0;
try
{
try {
Mat imgMat = cv_bridge::toCvShare(msg, "rgb8")->image;
delete imgProvider->currentShot;
imgProvider->currentShot = Mat2QImage(imgMat);
...
}
(* currentShot) является fecthed по imageRequest (...) метод из свойства 'источника' QML стороны.
Спасибо, но мой qml уже вызвал метод requestImage() по мере необходимости. Проблема в qml. Изображение не отображает переданное изображение (я думаю). Итак, я думаю, что я не знаю формат кодировки изображений или что-то в этом роде. В файле qml у меня есть этот раздел: «Изображение {... source:" image: // images/"+ imageSN ...}" –
1. Вы пытались сохранить QImage в файл и проверить его? 2. Есть ли сообщение об ошибке в отладочном сообщении? – diro
На самом деле, я просто сделал это. Он сохраняет файл png правильно. Это делается с помощью «imgProvider-> currentShot-> save (« delta.png »); - эта команда. Здесь currentShot является указателем на QImage. –