此代码使用带有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" );
}
答案 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));