繁体   English   中英

opencv qt显示视频

[英]opencv qt display Video

此代码用于在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" ); 
 }

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

您可能需要下载源代码(在Github上可用),使用CMake配置构建,然后自己重​​新构建它们。 是有关如何从源代码构建OpenCV库的指南的链接。

完成操作后, 是一个如何使用Qt框架从摄像机捕获帧的示例(只需将摄像机与您的案例交换文件)并将帧显示到窗口即可。

希望这对您有所帮助。

您可以在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));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM