opencv学习中——对视频的处理
来源:互联网 发布:app源码模板下载 编辑:程序博客网 时间:2024/06/05 05:48
1.将视频保存为连续的图片:
#include "stdafx.h"#include <stdio.h>#include "opencv2/opencv.hpp"#include <iostream>int main(int argc, char *argv[]){ CvCapture* capture = cvCaptureFromAVI("G:\\21.flv");//capture = cvCreateFileCapture("G:\\21.flv"); IplImage* img = 0; char image_name[100]; cvNamedWindow("testfire"); //读取和显示 while (1) { img = cvQueryFrame(capture); //获取一帧图片 if (img == NULL) break; cvShowImage("testfire", img); //将其显示 char key = cvWaitKey(20); sprintf(image_name, "%s%d%s", "video-capture\\video-capture", ++i, ".jpg");//保存的图片名 cvSaveImage(image_name, img); //保存一帧图片 } cvReleaseCapture(&capture); cvDestroyWindow("testfire"); return 0;}
sprintf(cstr, “%s%d%s”, “images\image”, n++, “.jpg”),
第一个参数cstr为目标串,值为后面一系列字串的拼接体;
第二个参数为后面各字串原本的类型格式,当然是共同写在一个双引号中;
第三个参数(即后面所有的)为需要进行拼接的各种类型值;
还有就是只要cstr长度足够,可以对任意个字串进行拼接并赋给它。
2.读取视频的宽度高度等参数:
#include "stdafx.h"#include <stdio.h>#include "opencv2/opencv.hpp"int read_video_info(int para_num, char* paras[]){ IplImage *pFrame = NULL; CvCapture* pCapture = NULL; //创建窗口 cvNamedWindow("video", 1); //参数验证 if( para_num > 2 ){ fprintf(stderr, "Usage: 程序名称 [video_file_name]\n"); return -1; } //打开摄像头 if (para_num ==1) if( !(pCapture = cvCaptureFromCAM(-1))){ fprintf(stderr, "Can not open camera.\n"); return -2; } //读取视频文件 if(para_num == 2) if( !(pCapture = cvCaptureFromFile(paras[1]))){ fprintf(stderr, "Can not open video file %s\n", paras[1]); return -2; } //逐帧读取视频 while(pFrame = cvQueryFrame( pCapture )) { cvShowImage("video",pFrame); char c=cvWaitKey(33); if (c == 27) break; //当输入ESC键时,退出窗口; } cvDestroyWindow("video"); cvReleaseImage(&pFrame); //获取视频文件信息 int frameH = (int) cvGetCaptureProperty(pCapture, CV_CAP_PROP_FRAME_HEIGHT); int frameW = (int) cvGetCaptureProperty(pCapture, CV_CAP_PROP_FRAME_WIDTH); int fps = (int) cvGetCaptureProperty(pCapture, CV_CAP_PROP_FPS); int numFrames = (int) cvGetCaptureProperty(pCapture, CV_CAP_PROP_FRAME_COUNT); printf("vedio's width = %d\t height = %d\n video's fps = %d\t numFrames = %d", frameW, frameH, fps, numFrames); getchar(); return 0;}
使用VideoCapture类读取图像序列:
1.打开一段视频或默认的摄像头:
//打开视频文件:其实就是建立一个VideoCapture结构 VideoCapture capture("../video.avi"); // 方法1 capture.open("../video.avi"); // 方法2
2.获取视频帧
capture.read(frame); // 方法一 读取视频的当前帧到Mat frame中 capture.grab(); // 方法二 capture.retrieve(frame); capture>>frame; // 方法三
3.获取视频的参数
VideoCapture的get方法可以获取帧率、总帧数、尺寸、格式等参数 double rate=capture.get(CV_CAP_PROP_FPS); // 获取 long nFrame=static_cast<long>(capture.get(CV_CAP_PROP_FRAME_COUNT)); // 获取总帧数
4.设置视频帧的读取位置,设置视频的帧率、亮度
// 第100帧 double position=100.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=0.5; capture.set(CV_CAP_PROP_POS_AVI_RATIO,position);
阅读全文
0 0
- opencv学习中——对视频的处理
- opencv(二)对视频的处理
- OpenCV中对avi视频的处理,并修改视频大小
- opencv学习系列:采用videoInput类对视频处理
- zedboard中使用opencv对视频进行处理
- opencv学习——视频读取、处理、保存
- OpenCV视频的处理
- OpenCV关于视频处理的学习(VideoCapture类)-在检测中一些必要的图像操作
- 学习OpenCV(三十一) -- 视频处理
- 【学习OpenCV】——2.4对图像进行平滑处理
- opencv学习笔记,调用摄像头并且对视频进行canny处理
- Opencv学习笔记——视频进度条的随动
- OpenCV学习笔记——视频的边缘检测
- vim+python+OpenCV学习三 : 对图像的像素处理
- 第五篇 学习OpenCV之视频处理
- opencv视频处理和检测学习总结
- 【OpenCV学习笔记 013】处理视频序列
- OpenCV学习——摄像头采集视频
- JAVA设计模式之 抽象工厂模式【Abstract Factory Pattern】
- valgrind callgrind性能分析
- java反射机制
- 工作上常用的tips
- Kafka基础
- opencv学习中——对视频的处理
- java 8种基本类型、3种引用类型、 特殊字符、算术运算符++ 、--、instanceof
- java修改图片宽高
- CSS3 之 flex 布局
- (3)Shiro的配置项(SSM和SpringBoot配置)
- Kotlin学习之资料整理
- 安卓安装apk之后直接打开和点击打开的区别
- 详解MySQL大表优化方案
- react-生命周期函数