环境配置如下:
用OpenCV播放视频就像显示图像一样简单。唯一不同的是,我们需要某种循环来读取视频序列中的每一帧。
源码如下:
#include <iostream>
#include <string>
#include "opencv2/highgui/highgui.hpp"?
#include "opencv2/imgproc/imgproc.hpp"
using namespace std;
int main(int argc,char ** argv)
{
? ? cv::namedWindow("Example3" , cv::WINDOW_AUTOSIZE);
? ? cv::VideoCapture cap;
? ? cap.open(string(argv[1]));?? //一旦视频被打开,视频读取结构将会包含所有的关于这个视频文件? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //可以读取的属性,包括状态信息
? ? cv::Mat frame;? // cv::Mat frame声明了一个可以保存视频帧的结构
? ? for (;;)
? ? {
? ? ? ? cap >> frame;
? ? ? ? if (frame.empty())break;
? ? ? ? cv::imshow("Example3", frame);?
? ? ? ? if (cv::waitKey(33) >= 0) break;? //一旦显示了这帧图片,我们会等待33毫秒
? ? }
? ? return 0;
}
最后执行OpencvTest1.exe video.mp4,播放效果如下:
?