首页 > 学院 > 开发设计 > 正文

Opencv读取和保存视频

2019-11-06 07:27:01
字体:
来源:转载
供稿:网友

转载 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);}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表