一.视频的读取
视频其实是由一帧帧图像所组成的,当帧率超过一个阈值就成了视频,opencv中通过VideoCapture类来实现视频的读入:
1.打开视频或从设备中获取图像
两种方法:
VideoCapture capture("../xx.avi"); //打开指定路径下的video
capture.open("../xx.avi"); //
2.获取视频帧的方法有四种:
capture.read(frame);
capture.grab();
capture.retrieve(frame);
capture>>frame;
其中第一种和第四种最为常见.
3.获取视频的参数
一个视频会有很多参数,如:帧率,总帧数,尺寸和格式等,都是通过VideoCapture类的get方法得到的.用的比较多的就是帧率和总帧数:
double frame_rate=capture.get(CV_CAP_PROP_FPS); //帧率
int frame_num=catture.get(CV_CAP_PROP_FRAME_COUNT); //总帧数
get方法的其他参数可以根据需要去查阅.
4.设置视频帧的读取位置
VideoCapture类中的set方法可以去出视频中某个位置的帧,可以通过帧编号,时间和位置来取:
// 第10帧
double position=10.0;
capture.set(CV_CAP_PROP_POS_FRAMES,position);
// 第1e6毫秒
double position=1e6;
capture.set(CV_CAP_PROP_POS_MSEC,position);
// 视频1/2位置
double position