我想向Qlabel显示实时相机图像。当我启动代码时,它不会给出任何错误,并且我的相机指示灯变成蓝色,这意味着工作。但是ui不启动。在我调试我的代码后,我发现它在while(true)
中总是循环,但ui->lblProcessedVideo->setPixmap.....
命令不显示任何UI。如何在QLabel中显示捕捉图像
您能用告诉我我的错误..
这里是我的部分代码:
void MainWindow::getImageFromVideo()
{
CvCapture* capture;
cv::Mat frame;
cv::Mat gray_frame;
capture = cvCaptureFromCAM(0);
if(capture)
{
while(true)
{
frame = cvQueryFrame(capture);
if(!frame.empty())
{
cvtColor(frame, gray_frame, CV_BGR2GRAY);
equalizeHist(gray_frame, gray_frame);
ui->lblProcessedVideo->setPixmap(QPixmap::fromImage(Mat2QImage(frame)));
}
}
}
}
编辑:Mat2QImage()
是转换垫的QImage
是布局内的'lblProcessedVideo'标签吗?可能标签大小为'0'且内容被隐藏。也许你可以将图像保存在文件中以确保“Mat2QImage”工作正常。 – eferion 2014-09-10 08:50:59
不是最好的建议,但你仍然可以尝试:在'ui-> lblProcessedVideo-> setPixmap(...'后调用'QCoreApplication :: processEvents()'。' – vahancho 2014-09-10 08:54:30
@eferion yes'lblProcessVideo'正在工作我测试它当我调试代码时,我发现'Mat2QImage'也是返回值 – goGud 2014-09-10 08:57:14