[opencv入门笔记] 读视频转图像—读取视频中每一帧图像
2017-10-04 12:14
555 查看
#include <opencv2 core="" core="" hpp=""> #include <opencv2 highgui="" highgui="" hpp=""> #include <opencv2 imgproc="" imgproc="" hpp=""> #include <iostream> using namespace std; using namespace cv; int main() { //打开视频文件:其实就是建立一个VideoCapture结构 VideoCapture capture("F:\\6.avi"); //检测是否正常打开:成功打开时,isOpened返回ture if (!capture.isOpened()) cout << "fail toopen!" << endl; //获取整个帧数 long totalFrameNumber = capture.get(CV_CAP_PROP_FRAME_COUNT); cout << "整个视频共" << totalFrameNumber << "帧" << endl; //设置开始帧() long frameToStart = 1; capture.set(CV_CAP_PROP_POS_FRAMES, frameToStart); cout << "从第" << frameToStart << "帧开始读" << endl; //设置结束帧 int frameToStop = 30; if (frameToStop< frameToStart) { cout << "结束帧小于开始帧,程序错误,即将退出!" << endl; return - 1; } else { cout << "结束帧为:第" << frameToStop << "帧" << endl; } //获取帧率 double rate = capture.get(CV_CAP_PROP_FPS); cout << "帧率为:" << rate << endl; //定义一个用来控制读取视频循环结束的变量 bool stop = false; //承载每一帧的图像 Mat frame; //显示每一帧的窗口 namedWindow("Extractedframe"); //两帧间的间隔时间: //int delay = 1000/rate; double delay = 1000 / rate; //利用while循环读取帧 //currentFrame是在循环体中控制读取到指定的帧后循环结束的变量 long currentFrame = frameToStart; //滤波器的核 int kernel_size = 3; Mat kernel = Mat::ones(kernel_size, kernel_size, CV_32F) / (float)(kernel_size*kernel_size); while (!stop) { //读取下一帧 if (!capture.read(frame)) { cout << "读取视频失败" << endl; return - 1; } cout << "正在读取第" << currentFrame << "帧" << endl; imshow("Extractedframe", frame); cout << "正在写第" << currentFrame << "帧" << endl; stringstream str; str << "sample" << currentFrame << ".png"; cout << str.str() << endl; imwrite(str.str(), frame); //waitKey(intdelay=0)当delay≤ 0时会永远等待;当delay>0时会等待delay毫秒 //当时间结束前没有按键按下时,返回值为-1;否则返回按键 int c = waitKey(delay); //按下ESC或者到达指定的结束帧后退出读取视频 if ((char)c == 27 || currentFrame > frameToStop) { stop = true; } //按下按键后会停留在当前帧,等待下一次按键 if (c >= 0) { waitKey(0); } currentFrame++; } //关闭视频文件 capture.release(); waitKey(0); return 0; } </iostream></opencv2></opencv2></opencv2>
开始帧1, 结束帧30 ,得到的结果如下 :
相关文章推荐
- [opencv入门笔记] 读视频转图像—读取视频中每一帧图像
- OpenCV笔记(1)载入图像 视频播放 读取摄像头
- OpenCV入门七:OpenCV打开视频文件,并对其中的每一帧图像进行Canny算子边缘化提取,并将结果保存为视频文件
- OpenCV入门_学习笔记_读取、显示、处理图像
- python opencv入门(学习笔记no.3)-从摄像头读取视频并显示
- Jetson TX1开发笔记(六):V4L2+OpenCV3.1以MJPG格式读取USB摄像头图像并实时显示
- 【opencv学习笔记五】一个简单程序:图像读取与显示
- 【openCV学习笔记】【2】读取并播放一段视频
- 双目视觉学习笔记(一)--qtcreator下使用opencv读取并存储双摄像头图像
- OpenCV学习笔记之图像视频显示
- opencv中读取视频每一帧并且单独保存
- 利用MFC和opencv读取视频显示图像方法
- opencv无法读取视频解决方法&&抽取视频帧存储为图像(python)
- OpenCV如何获取视频当前的一帧图像
- 用opencv从视频中读取图像为空的解决方法
- OpenCV2学习笔记(九):视频流读取与处理
- Python下opencv使用笔记(一)(图像简单读取、显示与储存)
- 韩顺平_php从入门到精通_视频教程_第4讲_图像_表格_实际应用-菜谱_课堂练习-课程表_学习笔记_源代码图解_PPT文档整理
- opencv [c++版] 学习笔记(1) 显示图像及播放视频
- OpenCV学习笔记1-读取图像/程序计时