learning opencv 2-3

用自带摄像头读取视频数据,并保存:

#include<opencv2\opencv.hpp>
using namespace cv;
using namespace std;

int main()
{
	CvCapture* capture = NULL;

	//网上说想要保存就加上这句,但是我试了没有声明这句直接在后定义也能保存
	//CvVideoWriter* writer = 0;  

	//capture = cvCaptureFromCAM(0);//貌似使用这两条语句都可以
	capture = cvCreateCameraCapture(0);

	IplImage* frame,*image;
	CvSize size = cvSize((int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH), (int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT));
	//还是先获得视频capture的尺寸再用于image,frame没有初始化,如果用frame->width等来得到尺寸容易产生错误
	//如果想用frame指向尺寸 得先捕捉一帧图像初始化frame
	image = cvCreateImage(cvSize(size.width / 2, size.height / 2), 8, 3);
	
	int fps = 15; //捕捉帧率,影响生成文件的播放速度
	CvVideoWriter* writer = cvCreateVideoWriter("F:\\demo.avi", CV_FOURCC('M', 'J', 'P', 'G'), fps, cvGetSize(image));

	cvNamedWindow("src");
	cvNamedWindow("after");

	//for (;;) 一直读
	for (int i=0;i<90;i++)//8s
	{
		frame = cvQueryFrame(capture);
		
		cvPyrDown(frame, image);
		cvWriteFrame(writer, image);

		cvShowImage("src", frame);
		cvShowImage("after", image);
		
		cvWaitKey(1000 / fps); //视频速度
	}

	cvReleaseCapture(&capture);
	cvDestroyWindow("src");
	cvDestroyWindow("after");
	cvReleaseImage(&image);

	return 0;

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值