采集视频并写入文件

来源:互联网 发布:深圳盘古数据上市了没 编辑:程序博客网 时间:2024/05/25 08:13
#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);//创建一个临时imgdouble 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 - 视频文件中帧的总数

0 0
原创粉丝点击