2011-08-08 47 views
2

请帮我完成上面的任务。我是新手openCV。我的系统中安装了OpenCV 2.2,并使用VC++ 2010 Express作为IDE。我没有内置摄像头在我的笔记本电脑... 只是我学会了如何加载图像。我非常渴望从我的磁盘加载视频文件(最好是mp4,flv格式),并希望使用openCV播放它。如何使用OpenCV从我的磁盘播放视频文件。

+0

如果你可以编辑这个问题,表示您的任何企图,随意标记,让管理员注意进行审查。 –

回答

1

使用OpenCV的接口(在Windows上对我来说工作更好),加载视频文件的函数是cvCaptureFromAVI()。在此之后,你需要通过cvQueryFrame()使用传统的循环来检索帧,然后cvShowImage()cvNamedWindow()创建的窗口上显示它们。

CvCapture *capture = cvCaptureFromAVI("video.avi"); 
if(!capture) 
{ 
    printf("!!! cvCaptureFromAVI failed (file not found?)\n"); 
    return -1; 
} 

int fps = (int) cvGetCaptureProperty(capture, CV_CAP_PROP_FPS); 
printf("* FPS: %d\n", fps); 

cvNamedWindow("display_video", CV_WINDOW_AUTOSIZE); 

IplImage* frame = NULL; 
char key = 0; 

while (key != 'q') 
{ 
    frame = cvQueryFrame(capture); 
    if (!frame) 
    { 
     printf("!!! cvQueryFrame failed: no frame\n"); 
     break; 
    } 

    cvShowImage("display_video", frame); 

    key = cvWaitKey(1000/fps); 
} 

cvReleaseCapture(&capture); 
cvDestroyWindow("display_video"); 

This blog post为您正在尝试完成的任务带来一些额外信息。

+0

非常感谢KarlPhilip ,,,,上面的代码工作正常....我是新来的OpenCV但想知道更多。请引导我从哪里开始?我可以得到一些帮助文件,因为我们使用得到MATLAB ..再次感谢... – Easyboy

+0

@mahesh http://stackoverflow.com/questions/5679909/looking-for-opencv-tutorial – karlphillip

0

(Hummm ......你似乎并没有试图通过自己做一些事,但无论如何)

docs

#include "opencv2/opencv.hpp" 

using namespace cv; 

int main(int, char**) 
{ 
    VideoCapture cap(0); // open the default camera 
    if(!cap.isOpened()) // check if we succeeded 
     return -1; 

    //Mat edges; 
    namedWindow("frames",1); 
    for(;;) 
    { 
     Mat frame; 
     cap >> frame; // get a new frame from camera 
     //ignore below sample, since you only want to play 
     //cvtColor(frame, edges, CV_BGR2GRAY); 
     //GaussianBlur(edges, edges, Size(7,7), 1.5, 1.5); 
     //Canny(edges, edges, 0, 30, 3); 
     //imshow("edges", edges); 
     imshow("frames", frame); 
     if(waitKey(30) >= 0) break; 
    } 
    // the camera will be deinitialized automatically in VideoCapture destructor 
    return 0; 
} 

这是使用OpenCV的1 old way。 x apis。

+0

的OP想的从视频文件加载框架,而不是一个相机 – karlphillip