OpenCV播放视频
程序员文章站
2024-03-19 22:48:58
...
使用opencv播放视频很容易,即循环的顺序读取视频中的每一帧,并且能够退出循环操作。
#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/highgui.hpp>
using namespace std;
using namespace cv;
int main(int argc, const char * argv[]) {
// insert code here...
const char * ImageLocation = "/Users/linwang/LinMovie/Wolf.mp4";
cvNamedWindow("Example2",CV_WINDOW_AUTOSIZE);
CvCapture * capture = cvCreateFileCapture(ImageLocation);
IplImage * frame;
while(1)
{
frame = cvQueryFrame(capture);
if(!frame)
{
break;
}
cvShowImage("Example2", frame);
char c = cvWaitKey(33);
if(c == 27)
{
break;
}
}
cvReleaseCapture(&capture);
cvDestroyWindow("Example2");
return 1;
}
上图只是截取了一个图片作为结果呈现。
1、cvNamedWindow用于创建一个名称为Example2的窗口。
2、cvCreateFileCapture()通过参数设置正确要读入的视频文件,返回一个指向CvCapture结构的指针。这个结构体包含了所有关于要读入的视频文件信息。
3、cvQueryFrame的参数为CvCapture结构的指针。用来将下一帧视频文件载入内存(实际是填充或者更新CvCapture结构中)。返回一个对应当前帧的指针。
4、cvWaitKey(33)表示当前帧被显示后,我们会等待33毫秒。如果在这个过程中,用户触发了一个按键,c会被设置成这个按键的ASCII码,否则,c会被设置成-1。如果用户触发了ESC(ASCII码为27),循环会退出读入视频停止。