使用cv::VideoCapture类读取视频文件、使用cv::VideoWriter类写入视频文件,使用思路和方法与C++中处理文件的fstream文件流方法类似。
完整流程如下(各别步骤可以省略或合并):
1、创建对象;
2、与文件绑定 (1,2步也可以通过构造函数合并到一起完成);
3、读取(析取)或写入;
- 对于读取,VideoCapture中重载的运算符 >> 析取器每次读取一帧 (文件流fstream中重载的 >> 析取器每次读取直到遇到空格或换行符)
- 对于写入,VideoCapture中重载的运算符 << 每次向VideoCapture对象中写入一帧。
4、释放对象 (调用release()成员函数)
读取视频的代码范例如下:
cv::VideoCapture cap; //创建VideoCapture对象
cap.open("my_video_dir.avi"); //将视频文件绑定到所创建的VideoCapture对象上
if(!cap.isOpened()){ //检查是否能正常打开视频文件
std::cout<<"fail to open video"<<std::endl;
}
cv::Mat frame;
while(true){
//方法一:>>析取器
cap>>frame; //每个循环从cap中解析一帧,赋给fr