opencv qt显示视频

时间:2013-10-07 12:58:51

标签: c++ qt opencv

此代码使用带有Visual Studio的opencv显示视频

我一直在寻找一个教程如何使用Qt和opencv来显示视频 但我找不到任何:/

这里有谁知道怎么做?

#include <opencv\highgui.h>
#include <opencv\cv.h>

int main(int argc, char** argv)
{
CvCapture* capture1 = cvCreateFileCapture("c:\\VideoSamples\\song.avi"); 
IplImage* frame1;
cvNamedWindow( "display video1", CV_WINDOW_AUTOSIZE ); 


while(1) 
 {
 frame1 = cvQueryFrame( capture1 ); 
 cvSmooth( frame1, out, CV_GAUSSIAN, 17, 17 );
 if( !frame1 ) break;
 cvShowImage( "display video1", frame1 ); 

 char c = cvWaitKey(33);
 if( c == 27 ) break; 
 }
 cvReleaseCapture( &capture1 );
 cvDestroyWindow( "display video1" ); 
 }

2 个答案:

答案 0 :(得分:0)

对于初学者,您必须确保您使用的OpenCV库是使用Qt支持构建的。

您可能需要下载源代码(可在Github上找到),使用CMake配置构建,并自行重新构建。 Here是指向如何从源构建OpenCV库的指南的链接。

完成后,this是一个如何从摄像机捕获帧的示例(只需为您的情况交换带文件的摄像机)并使用Qt框架将帧显示到窗口。< / p>

希望这会对你有所帮助。

答案 1 :(得分:0)

您可以在QLabel中轻松显示cv :: Mat:

假设帧是您当前的RGB视频帧,其深度为8bit,作为cv :: Mat-object,而label是指向QLabel的指针:

//convert to QPixmap:
QPixmap pixmap = QPixmap::fromImage(QImage((uchar*)frame.data, frame.cols, frame.rows, frame.step, QImage::Format_RGB888));

//set scaled pixmap as content:
label->setPixmap(pixmap.scaled(frame.cols, frame.rows, Qt::KeepAspectRatio));