转载 https://yq.aliyun.com/articles/31089
在OpenCV中,保存视频一般分为三步骤:
1、初始化工作
//初始化保存视频文件 CvVideoWriter* video=NULL; video=cvCreateVideoWriter("E://Sequence_mask//out.avi",CV_FOURCC('X', 'V', 'I', 'D'), m_inputfps,cvSize(m_inputwidth,m_inputheight),0);//1代表彩色视频,0代表黑白视频,即mask if(video) cout<<"VideoWriter has created."<<endl;2、写入//写入文件 cvWriteFrame(video,m_mask);//img m_bkimg m_mask3、销毁//释放video cvReleaseVideoWriter(&video);一般只需这三步骤,需要注意的是你所保存的视频是彩色视频还是黑白视频,这一点cvCreateVideoWriter的参数是不一致的!!!
转载 http://lib.csdn.net/article/opencv/32904
//实现对视频的读入,灰度化,保存视频的功能#include <cv.h>#include<highgui.h>#include <iostream>using namespace std;int main(){ char *video="test.avi";//视频文件,名字可以修改 CvCapture *cap=cvCaptureFromAVI(video);//从视频文件中读取 /*CvCapture *cap=cvCaptureFromCAM(0);*///从摄像头捕捉 iplImage *img=cvQueryFrame(cap);//读取一帧 if (!img) { cout<<"读取视频出错"<<endl; exit(0); } //获取视频文件的参数 int frameHeight =(int) cvGetCapturePRoperty(cap,CV_CAP_PROP_FRAME_HEIGHT);//帧高度 int frameWidth =(int) cvGetCaptureProperty(cap,CV_CAP_PROP_FRAME_WIDTH);//帧宽度 int fps =(int) cvGetCaptureProperty(cap,CV_CAP_PROP_FPS);//帧率 int numFrames =(int) cvGetCaptureProperty(cap,CV_CAP_PROP_FRAME_COUNT);//帧数 cout<<"视频图像的高度是"<<frameHeight<<" 宽度是"<<frameWidth<<endl; cout<<"视频的帧率是"<<fps<<" 帧数是"<<numFrames<<endl; //CvVideoWriter *writer=cvCreateVideoWriter("out.avi",CV_FOURCC('x','v','i','d'),fps,cvSize(frameWidth,frameHeight));//对于彩色视频文件 CvVideoWriter *writer=cvCreateVideoWriter("out.avi",-1,fps,cvSize(frameWidth,frameHeight),0);//对于灰度视频文件 IplImage *grayimg=cvCreateImage(cvSize(frameWidth,frameHeight),8,1); while (img) { cvCvtColor(img,grayimg,CV_BGR2GRAY); cvNamedWindow("灰度图",0); cvShowImage("灰度图",grayimg); cvWriteFrame(writer,grayimg); if(cvWaitKey(20)==27)//等待20毫秒,按下Esc退出 break;; img=cvQueryFrame(cap); } //注意不用释放img cvReleaseImage(&grayimg); cvReleaseCapture(&cap); cvReleaseVideoWriter(&writer);}
新闻热点
疑难解答