opencv读入视频并播放的类

直接上代码。

// .h 
#pragma once
#include <opencv2\highgui\highgui.hpp>
class VideoPlayer
{
public:
     VideoPlayer();
     ~VideoPlayer();

     int Play();
};


// .cpp
#include "stdafx.h"
#include "VideoPlayer.h"

VideoPlayer::VideoPlayer()
{
}


VideoPlayer::~VideoPlayer()
{
}

int VideoPlayer::Play()
{

     CvCapture * capture = cvCreateFileCapture("D:\\Handwriting Beautification Using Token Means.mp4");  //读取视频
     if (capture == NULL) {
          printf("NO capture");    //读取不成功,则标识
          return 1;
     };
     double fps = cvGetCaptureProperty(capture, CV_CAP_PROP_FPS);   //读取视频的帧率
     int vfps = 1000 / fps;                                        //计算每帧播放的时间
     printf("%5.1f\t%5d\n", fps, vfps);
     double frames = cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_COUNT);//读取视频中有多少帧
     printf("frames is %f\n", frames);
     cvNamedWindow("example", CV_WINDOW_AUTOSIZE);                  //定义窗口
     IplImage * frame;
     while (1){
          frame = cvQueryFrame(capture);                          //抓取帧
          float ratio = cvGetCaptureProperty(capture, CV_CAP_PROP_POS_AVI_RATIO);     //读取该帧在视频中的相对位置
          printf("%f\n", ratio);
          if (!frame)break;
          cvShowImage("example", frame);                          //显示
          char c = cvWaitKey(vfps);
          if (c == 27)break;
     }
     cvReleaseCapture(&capture);
     cvDestroyWindow("example");

     return 0;
}



注意类的写法,很多c++语法都忘记了
比如play前面没有写上类名,就会出现 “无法编译的外部符号” 报错

你可能感兴趣的:(C++,类,视频,opencv)