采集视频并写入文件
2016-07-08 12:46
288 查看
#include <cv.h> #include <cxcore.h> #include <highgui.h> int main(int argc, char** argv) { CvCapture* capture1 = cvCreateCameraCapture(0);//初始化从摄像头中获取视频 cvNamedWindow("video");//创建一个窗口对象 IplImage *tempImg = cvQueryFrame(capture1);//创建一个临时img double fps = 20; CvSize size = cvSize((int)cvGetCaptureProperty(capture1, CV_CAP_PROP_FRAME_WIDTH), (int)cvGetCaptureProperty(capture1, CV_CAP_PROP_FRAME_HEIGHT));//获取窗口的大小 //写入文件参数:目标文件,编码格式,帧率,大小 CvVideoWriter *Writer = cvCreateVideoWriter("D:\\test.avi", CV_FOURCC('M', 'J', 'P', 'G'), fps, size); //使用MJPG格式编码 //IplImage * out = cvCreateImage(size, IPL_DEPTH_8U, 3);//创建一个多通道的图片,传入size保证与窗口的大小一致 while (1) { tempImg = cvQueryFrame(capture1);//获得当前帧 if (!tempImg)//如果读取不到帧,便退出循环 break; //cvCopy(tempImg, out);//将临时帧拷贝到要写入的帧里面。 参数:(源,目标) cvWriteFrame(Writer, tempImg);//将读取的帧写入视屏文件 cvShowImage("video", tempImg);//显示出来当前帧 char c = cvWaitKey(33); if (c == 27) break; if (c == 97) // 如果按a,则保存下当前帧 cvSaveImage("D:\\test.jpg", tempImg); } cvReleaseVideoWriter(&Writer); // cvReleaseImage(&out); cvReleaseCapture(&capture1); cvDestroyWindow("video"); }
cvGetCaptureProperty常用参数:
CV_CAP_PROP_POS_MSEC - 影片目前位置,为毫秒数或者视频获取时间戳
CV_CAP_PROP_POS_FRAMES - 将被下一步解压/获取的帧索引,以0为起点
CV_CAP_PROP_POS_AVI_RATIO - 视频文件的相对位置(0 - 影片的开始,1 - 影片的结尾)
CV_CAP_PROP_FRAME_WIDTH - 视频流中的帧宽度
CV_CAP_PROP_FRAME_HEIGHT - 视频流中的帧高度
CV_CAP_PROP_FPS - 帧率
CV_CAP_PROP_FOURCC - 表示codec的四个字符
CV_CAP_PROP_FRAME_COUNT - 视频文件中帧的总数
相关文章推荐
- 各种编码UNICODE、UTF-8、ANSI、ASCII、GB2312、GBK详解
- perl 获取文件内容里第一个AAA和最后一个AAA
- perl 获取文件内容里第一个AAA和最后一个AAA
- Android使用ListView批量删除item的方法
- Oculus CTO卡马克:延迟背后的真相
- L7,too late
- 视屏采样
- ulipad中文乱码解决方案
- 后续有空再完善抓图程序,挺有趣的东西
- BZOJ2276 [Poi2011]Temperature
- Android Material Design系列之CoordinatorLayout,CollapsingToolbarLayout等
- Web标准设计-小苏
- MSSql使用SQL语句快速查看表对的就说明,及表字段描述及字段类型
- 1.显示一张图片
- 顺序队列
- vs配置opencv
- 对FlowLayoutPanel里面的控件进行排序
- Ubuntu14.04+Theano+OpenCL+libgpuarray实现GPU运算
- windows10下安装ubuntu16.04 双系统
- 国双前端笔试题-2016年07月08日