我有" rgb8"格式msg通过ROS主题订阅提供。 如何创建一个QImage并让qml Image显示它上面的图片? 目前,我正在处理以下代码段。
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)由来自qml方面的imageRequest(...)方法的源代码'属性。
答案 0 :(得分:0)
您应该参考QQuickImageProvider。创建继承QQuickImageProvider并实现requestImage()或requestPixmap()的q ROSImageProvider类,然后在QMLEngine中注册它:
engine->addImageProvider(QLatin1String("ros"), new ROSImageProvider);
然后您可以使用以下QML语法来获取图像:
Image { source: "ros://some_id" }
您可以参考Qt文档以获取完整示例。