【问题标题】:MatToQImage QPixmap::scaled: Pixmap is a null pixmapMatToQImage QPixmap::scaled: Pixmap 是一个空像素图
【发布时间】:2015-03-30 13:04:55
【问题描述】:

我尝试将OpenCV处理的Mat格式的视频显示到Qt自定义FrameLabel。当我添加 OpenCV 函数 imshow("frame",mat) 时可以填充 Mat 帧,但是在我添加后转到 QPixmap::scaled: Pixmap is a null pixmap删除了 imshow("frame",mat)。即使试图锁定线程也不能解决问题。我做了一些搜索,发现它可能是由于 QPixmap 资源应该定义在“xxx.qrc”之类的东西中。 我的代码如下:

void IntelligentSurveillance::on_pushButton_clicked(){
    QMutex processingMutex;
    string filename = VIDEO_PATH;
    VideoCapture cap;

    cap.open(filename);
    Mat mat;
    QImage qImage;

    for (;;)
    {
        cap >> mat;
        //processingMutex.lock();
        qImage = MatToQImage(mat);
        //processingMutex.unlock();

        ui.frame->setPixmap(QPixmap::fromImage(qImage).scaled(ui.frame->width(), ui.frame->height(), Qt::IgnoreAspectRatio));

        //imshow("frame", mat);
        if (waitKey(30) >= 0) break;
    }}

输出总是这样:QPixmap::scaled: Pixmap is a null pixmap

问题是当我添加 imshow("frame",mat)...

时它工作正常

有人可以帮忙吗?谢谢!!

【问题讨论】:

    标签: opencv qpixmap


    【解决方案1】:

    你需要使用临时变量来保存图像,例如

    QPixmap icon = QPixmap(":/img/" + iconFileName);
    QPixmap tmp = icon.scaled(30, 30, Qt::KeepAspectRatio);
    value = tmp;
    

    这条消息消失了!

    【讨论】:

      猜你喜欢
      • 2019-02-13
      • 1970-01-01
      • 2017-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多