opencv学习——视频读取、处理、保存
2017-08-29 12:39
447 查看
opencv3
代码如下:
使用很简单,先调用构造函数确定文件的名称,格式,帧率,帧大小,是否彩色。其中格式作为第二个参数,OpenCV提供的格式是未经过压缩的,目前支持的格式如下:
CV_FOURCC(‘P’, ‘I’, ‘M’, ‘1’) = MPEG-1 codec
CV_FOURCC(‘M’, ‘J’, ‘P’, ‘G’) = motion-jpeg codec
CV_FOURCC(‘M’, ‘P’, ‘4’, ‘2’) = MPEG-4.2 codec
CV_FOURCC(‘D’, ‘I’, ‘V’, ‘3’) = MPEG-4.3 codec
CV_FOURCC(‘D’, ‘I’, ‘V’, ‘X’) = MPEG-4 codec
CV_FOURCC(‘U’, ‘2’, ‘6’, ‘3’) = H263 codec
CV_FOURCC(‘I’, ‘2’, ‘6’, ‘3’) = H263I codec
CV_FOURCC(‘F’, ‘L’, ‘V’, ‘1’) = FLV1 codec
代码如下:
#include <QCoreApplication> #include <opencv2/opencv.hpp> #include <opencv2/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <iostream> #include "stdio.h" using namespace std; using namespace cv; int main(int argc, char *argv[]) { //【1】读入视频 VideoCapture capture("/home/chen/pg/qt/video/video/1.flv"); //检测是否正常打开:成功打开时,isOpened返回ture if(!capture.isOpened()) cout<<"fail to open!"<<endl; //获取整个帧数 long totalFrameNumber = capture.get(CV_CAP_PROP_FRAME_COUNT); cout<<"整个视频共"<<totalFrameNumber<<"帧"<<endl; //获取帧率 double fps = capture.get(CV_CAP_PROP_FPS); cout<<"帧率为:"<<fps<<endl; //两帧间的间隔时间: int delay = 1000/fps; Size dst_size; //修改目标尺寸 dst_size.width=288; dst_size.height=288; VideoWriter videoWriter("/home/chen/pg/qt/video/video/2.flv", CV_FOURCC('F', 'L', 'V', '1'), fps, dst_size); // VideoWriter videoWriter("/home/chen/pg/qt/video/video/2.avi", CV_FOURCC('M', 'J', 'P', 'G'), fps, dst_size); Mat frame; //读取原视频的画面大小 /* capture>>frame; int col= int(frame.cols); int row= int(frame.rows); cout << "cols=" << col << endl; cout << "rows=" << row; */ while (1) { capture>>frame; //读取当前帧 Mat dstimg; //改变图像大小 resize(frame,dstimg,dst_size,0, 0, INTER_LINEAR); videoWriter< 4000 <dstimg; if(frame.empty()) //若视频完成播放,则退出循环 { break; } imshow("读取视频",dstimg); //显示当前帧 waitKey(delay); //延时40ms } capture.release(); /* //【2】循环显示每一帧 while(1) { Mat frame;//定义一个Mat变量,用于存储每一帧的图像 capture>>frame; //读取当前帧 Mat dstimg; resize(frame,dstimg,dst_size,0, 0, INTER_LINEAR); if(frame.empty()) //若视频完成播放,则退出循环 { break; } imshow("读取视频",dstimg); //显示当前帧 waitKey(delay); //延时30ms }*/ return 0; }
附加内容:
VideoWriter类。
这个类是highgui交互很重要的一个工具类,可以方便我们容易的将图片序列保存成视频文件。类内成员函数有构造函数,open,isOpened,write(也可以用<<),使用还是很简单的。使用很简单,先调用构造函数确定文件的名称,格式,帧率,帧大小,是否彩色。其中格式作为第二个参数,OpenCV提供的格式是未经过压缩的,目前支持的格式如下:
CV_FOURCC(‘P’, ‘I’, ‘M’, ‘1’) = MPEG-1 codec
CV_FOURCC(‘M’, ‘J’, ‘P’, ‘G’) = motion-jpeg codec
CV_FOURCC(‘M’, ‘P’, ‘4’, ‘2’) = MPEG-4.2 codec
CV_FOURCC(‘D’, ‘I’, ‘V’, ‘3’) = MPEG-4.3 codec
CV_FOURCC(‘D’, ‘I’, ‘V’, ‘X’) = MPEG-4 codec
CV_FOURCC(‘U’, ‘2’, ‘6’, ‘3’) = H263 codec
CV_FOURCC(‘I’, ‘2’, ‘6’, ‘3’) = H263I codec
CV_FOURCC(‘F’, ‘L’, ‘V’, ‘1’) = FLV1 codec
相关文章推荐
- Open CV学习记录(十五)—读取视频,处理后保存
- OpenCV学习笔记(4)视频文件的读取与保存(2010-01-23 更新)
- OpenCV学习之视频读取与帧的提取、显示及保存
- OpenCV学习——读取usb摄像头或视频并按帧保存
- OpenCV学习之视频读取与帧的提取、显示及保存
- OPenCV学习之视频读取,与帧的提取、显示与保存
- OpenCV学习笔记(4)视频文件的读取与保存
- OpenCV学习之视频读取与帧的提取、显示及保存
- Pythone OpenCV学习笔记之:视频文件读取与保存
- OpenCV2学习笔记(九):视频流读取与处理
- opencv学习笔记三 视频处理序列(1)读取视频序列
- opencv学习系列:视频读取及自定义视频类处理
- MATLAB读取图像的每一帧处理之后保存成视频文件
- OpenCV学习笔记04--图片和视频的保存
- OpenCV学习笔记(一):读取、显示、保存图片
- opencv中读取视频每一帧并且单独保存
- 第五篇 学习OpenCV之视频处理
- 【OpenCV学习笔记】四、摄像头/视频的读取与写入
- OpenCV入门_学习笔记_读取、显示、处理图像
- 用opencv读取视频保存视频