【发布时间】: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)...
时它工作正常有人可以帮忙吗?谢谢!!
【问题讨论】: