如何使用 OpenCV 从我的磁盘播放视频文件。? [关闭]

Posted

技术标签:

【中文标题】如何使用 OpenCV 从我的磁盘播放视频文件。? [关闭]【英文标题】:How to play a video file from my disk using OpenCV.? [closed] 【发布时间】:2011-08-08 15:22:46 【问题描述】:

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

【问题讨论】:

如果您可以编辑此问题以表明您的任何尝试,请随时标记它以供版主注意以进行审核。 【参考方案1】:

使用OpenCV的C接口(在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 为您尝试完成的任务带来了一些额外信息。

【讨论】:

非常感谢 KarlPhilip,,,, 上面的代码运行良好....我是 openCV 新手,但想了解更多。请指导我应该从哪里开始??我可以得到一些帮助文件,因为我们使用 get 用于 MATLAB.. 再次感谢 ... @mahesh ***.com/questions/5679909/looking-for-opencv-tutorial【参考方案2】:

(嗯……您似乎并没有尝试自己做某事,但无论如何)

来自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;

这是 old way 使用 opencv 1.x api。

【讨论】:

OP 想要从视频文件而不是相机中加载帧

以上是关于如何使用 OpenCV 从我的磁盘播放视频文件。? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何从我的自定义制作 DASH 之类的视频播放器中制作 HLS 视频播放器?

OpenCv - 输出视频未播放

如何使用opencv在google colab上播放视频?

使用 OpenCV 在 Qt 中视频太快

OpenCV中如何播放avi文件的音频

Qt + OpenCV 使用 std::thread 播放视频