捕获摄像头,使用PyrDown处理并保存视频

标签: 摄像头 pyrdown 视频 | 发表时间:2013-12-23 22:36 | 作者:liuyongshui4979
出处:http://blog.csdn.net

                                                                    实验名:使用opencv编程,捕获摄像头,使用PyrDown处理并保存视频

                                                                    功能:捕获摄像头,使用PyrDown处理并保存视频

                                                                    作者:Spark

                                                                    编译环境:opencv2.4.4及VS2008

                                                                    参考书:《学习opencv》及大牛们的文档等等

================================================================================================

直接上代码:

 

//功能:捕获摄像头,使用PyrDown处理并保存视频
//作者;Spark
//日期:13-12-23
#include "stdafx.h"
#include "opencv2/opencv.hpp"

//定义和声明doPyrDown函数
IplImage* doPyrDown(IplImage* in, int filter= CV_GAUSSIAN_5x5)//IPL_GAUSSIAN_5x5
{
     IplImage* out= cvCreateImage(  //此语句是使out和in的大小及类型一样
		                                             cvSize(in->width/2, in->height/2),
													 in->depth,
													 in->nChannels
													 );
	 cvPyrDown(in, out,CV_GAUSSIAN_5x5);
	 //返回out
	 return out;
};

//主函数main
int _tmain(int argc, _TCHAR* argv[])
{
	//创建两个窗口,一个是显示未处理前,一个事显示处理后的视频
	cvNamedWindow("src_video");
	cvNamedWindow("dst_video");

	//定义捕获摄像头的指针capture并初始化
	CvCapture* capture=0;
	capture= cvCreateCameraCapture(0);
	//检验capture是否捕获
	if(!capture)
	{
	      printf("Could not capture video!\n");
		  return -1;
	}

	IplImage* frame=0 ;  //定义frame,用于获取视频的每一帧
	//定义保存视频的属性
	//double fps= cvGetCaptureProperty(capture, CV_CAP_PROP_FPS);
	//CvSize size= cvSize((int) cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH),  //宽
		                        //  (int) cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT)  //高
							 	//  );
	int fps= 25;
	int frameW= 640; 
	int frameH= 480;
	int isColor= 1;
	CvVideoWriter* writer =cvCreateVideoWriter(
		                                                             "aboutme.avi",
																	  CV_FOURCC('M', 'J', 'P', 'G'),
																	  fps,
	                                                                  cvSize(frameW, frameH),
																	  isColor
																	  );
	
	//while循环,cvPyrdown的处理,及显示并保存
	while(true)
	{
		//使用cvQueryFrame获取视频的每一帧
		frame= cvQueryFrame(capture);
		//检验frame是否为零,若frame=0,退出while循环
		if(!frame)
		{
			break;
		}

		//定义out_frame
	IplImage* out_frame= cvCreateImage(  //此语句是使out_frame和fram的大小及类型一样
		                                             cvSize(frame->width/2, frame->height/2),
													 frame->depth,
													 frame->nChannels
													 );

		//显示原视频
		cvShowImage("src_video", frame);

		//使用cvPyrDown处理视频
		out_frame= doPyrDown(frame);  
		//显示处理后视频
		cvShowImage("dst_video", out_frame);

		//保存处理后的视频
       cvWriteFrame(writer, frame);

		//wait
		char c= cvWaitKey(3);
        if(c==27)
		{
		   break;
		}
	}
	//释放内存及窗口
	cvReleaseVideoWriter( &writer);
	cvReleaseCapture( &capture);
	cvDestroyWindow( "src_video");
	cvDestroyWindow( "dst_video");

	return 0;
}
 

=====================================================================================

                                                                            总结

 一:实验总体完成得还可以,只是我老把一些代码打错,打字速度慢

出现的错误:

一:按照书上写视频保存的帧数及高宽时,

代码如下:

	//定义保存视频的属性
    double fps= cvGetCaptureProperty(capture, CV_CAP_PROP_FPS);
	CvSize size= cvSize((int) cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH),  //宽
		                            (int) cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT)  //高
							 	     );
保存的视频只有0KB 疑问囧啊。

后来直接按照大牛们的方法,直接赋值保存的视频不再为0Kb了^_^。


作者:liuyongshui4979 发表于2013-12-23 14:36:23 原文链接
阅读:0 评论:0 查看评论

相关 [摄像头 pyrdown 视频] 推荐:

捕获摄像头,使用PyrDown处理并保存视频

- - CSDN博客推荐文章
                                                                    实验名:使用opencv编程,捕获摄像头,使用PyrDown处理并保存视频.                                                                     功能:捕获摄像头,使用PyrDown处理并保存视频.

视频:制片人在眼睛里安装摄像头,未来人类变革是这样的

- Marvin - 36氪
如果你少了一只眼睛,头上有一个洞,为什么不在那里放一个摄像头呢. Rob Spence 13 岁时和祖父去爱尔兰游玩,在拿枪射击时,虽然姿势正确,但枪还是朝后面走火了,他的眼睛受了很严重的伤. 随着他慢慢长大,视力也越来越恶化,最后,他的一只眼睛完全看不见任何东西. 直到三年前,他摘除了那只坏的眼睛并装了一个假眼.

MIT监控摄像头抓住Aaron Swartz

- vieplivee - Solidot
据《连线》的报导,上周被起诉的黑客Aaron Swartz是在MIT摄像头的帮助下被抓住的. Aaron Swartz因为下载了480万篇学术论文而面临最高35年徒刑和100万美元罚款. MIT的警卫是于1月4日首次听到技术人员报告有笔记本和外置硬盘藏在网络柜内,三名警察在上午进入房间取出了笔记本寻找指纹,然后将笔记本放回去,并安装了摄像头监控房间.

iPhone的摄像头一直在进步

- khsing - YesKafei Daily
iPhone 4S的拍照能力是四代中的亮点,甚至有人提出有了4S,就不再需要卡片相机. 我想苹果公司又赢了,他们关注用户的焦点,放大看得到的性能. 来自摄影师Lisa Bettany的实验比较,从左到右,可以看到iPhone不断的提升,提升到可以让用户清晰可见的优势,提升到成为数码相机厂商竞争对手的水准.

利用DroidCam将手机摄像头打造成电脑摄像头

- - 开源软件 - ITeye博客
现在许多同学的电脑上没有摄像头,但是随着智能手机的普及,大多数同学都有带摄像头的手机. 而智能手机的摄像头比电脑的usb摄像头的效果好很多. 那可不可以把手机摄像头用在电脑上来网络聊天呢,其实这是可以的,这里我们需要借助DroidCam软件来让手机摄像头变成电脑摄像头. 本人亲测通过的软硬件环境:.

HTC Bliss 首露真容,带前置摄像头

- Helo Wei - Engadget 中国版
HTC Bliss 离我们越来越近了,不仅仅已经出现在 FCC ,我们也看到谍照,不过有点看不清庐山真面目. 这次在 XDA China 论坛中首露真容,照片很清楚的展示了这款机子的外观面貌,包括前置摄像头,可以预见离正式发布时间不远了. HTC Bliss 和 HTC Desire S 的外观三围大同小异,会搭载 HTC Sense 3.5 出货,提供多种颜色选择.

汽车超速摄像头拍到一匹马

- Iceberg - 煎蛋
按理说超速摄像头应都只拍到超速形势的汽车,没想到来自德国Meppen 小镇的一部这样的摄像头却拍到了一匹马. @oioi:很明显,这匹马也超速啦. 警察叔叔解释道:这张照片其实是由一部超速的汽车引发的,只是这匹马恰好出现在那里. 而至于这匹马,是周围某住户的,它因脱缰而跑出来. 20分钟后也被警察叔叔给了回去.

夜店电梯摄像头拍下的那点事,你懂的~

- Richard - 河蟹娱乐
感谢火星网友卡卡西的邪轮眼的分享. 我是澡堂搓澡的,我把一个光头大哥的纹身搓没了,怎么办. 原文链接: http://hxyl.net/2011/09/25/ye-dian/. 火星娱乐 河蟹娱乐 Copyright © 2007-2009 爱祖国,爱人民,唉派对. 更多精彩欢迎您订阅http://feed.feedsky.com/kisshi,更加欢迎投稿.

AT&T展示iPhone新机壳图片 摄像头开口扩大

- Darth Noctis - cnBeta.COM
据国外媒体报道,美国无线运营商AT&T已经开始在其各地商店展示iPhone新机壳的图片. 从AT&T展示的图片来看,新机壳与旧机壳有一个明显的不同之处,即新机壳的背部摄像头开口比旧机壳的开口要大很多. 如果苹果真的推出一款“iPhone 4S”机型,那么摄像头感应器的尺寸应该比iPhone4目前的机型要大一些.

Flash再曝漏洞 可偷偷监控摄像头

- clowwindy - cnBeta.COM
10月20日消息,Adobe 公司正在修复一个 Flash 相关的漏洞,该漏洞可以被利用暗中打开访客的麦克风和摄像头. "该问题在 Adobe 服务器的 Flash 播放器设置管理器中",Adobe 的发言人 Wiebke Lips 表示. "工程师正在加紧漏洞修复工作",Lips 在e-mail 中表示,"注意的是该漏洞不会涉及或需要产品更新,可被在线在服务器端修复.