Opencv读取和保存视频

转载 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_mask

3、销毁

//释放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);
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值