多媒体摄像头程序开发与应用计算机毕业论文毕业设计_第1页
多媒体摄像头程序开发与应用计算机毕业论文毕业设计_第2页
多媒体摄像头程序开发与应用计算机毕业论文毕业设计_第3页
多媒体摄像头程序开发与应用计算机毕业论文毕业设计_第4页
多媒体摄像头程序开发与应用计算机毕业论文毕业设计_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、系 别 信息技术系 学 号 毕业论文多媒体摄像头程序开发与应用论文作者: 指导教师: 专业 领 域 : 计算机应用 论文提交日期:2011-4-2摘 要随着多媒体电脑技术的发展与普及,电脑在人们的生活中已是不可或缺的一部分,多媒体技术广泛应用于生活、教学、研发等各个领域。而多媒体摄像头在其中扮演着一个十分重要的角色,应用于娱乐、通讯、安全等方面。操作摄像头方便简单,而在微软公司最新推出的windows7操作系统中并没有像windows xp那样给用户提供一个简易操作摄像头的程序,针对这种情况本文讲述了如何利用directshow技术开发一个在windows7以及windows其他版本的操作系统

2、中都可以使用的多媒体摄像头程序。除此之外,该程序还可以用做单路视频监控软件来使用,足可以满足小型商店以及家庭的需求。关键词:多媒体;摄像头程序;directshowdeveloping and applying of the multimedia cameras program abstractwith the development of computer technology and multimedia popularization, the computer has already been an integral part in peoples life. the multimedi

3、a technology is widely used in many different fields, such as teaching, research and development, and so on. however, multimedia camera plays a very important role, which is applied in entertainment, communication, security, etc. operating cameras is not only convenient, but also easy. while the lat

4、est product, windows7 operating systems by microsoft, does not like windows - xp which offers users a simple camera operation program. according to this kind of situation, this article talks about how to use directshow to develop a program which makes the multimedia camera can be used in windows7 an

5、d other series of windows operating system. in addition, the program also can be used as single video monitoring software, which can totally satisfy the demand of small-sized stores and family.key words:multimedia; camera program; directshow目 录一概 论1(一)摄像头程序的概况1(二)dycap(多媒体摄像头程序)的特征1(三)directshow组件原理

6、分析1二系统介绍及主要功能的实现方法2(一)开发工具及运行环境2(二)主要功能以及实现方法21. 视频预览22. 视频录制63. 图片采集64. 换肤功能8三小结9参考文献10致谢10附录101. 安装程序102. 源码10一概 论(一)摄像头程序的概况摄像头(camera)又称为电脑相机,电脑眼等,是一种视频输入设备,被广泛的运用于视频会议,远程医疗及实时监控等方面。普通的人也可以彼此通过摄像头在网络进行有影像、有声音的交谈和沟通。另外,人们还可以将其用于当前各种流行的数码影像,影音处理。摄像头程序是在操作系统之上人和摄像头交互的一种平台,通过摄像头程序可以将摄像头捕捉到的视频信号转换成数字

7、模式,并加以压缩后转换到计算机上运用。(二)dycap(多媒体摄像头程序)的特征本程序为用户提供丰富友好的操作界面,支持多个视频设备以及解码器的选择,集视频预览、视频录制、图片采集等主要功能为一体,并且为用户提供了非常方便的管理平台。根据不同需要用户可以自己选择相应的解码器来录制视频和进行图片采集。除此之外,该软件还可以当做简单的单路视频监控软件使用,其实时预览、视频录制和图片采集的功能足可以满足小型超市以及家庭监控的需求。(三)directshow组件原理分析directx是microsoft公司为游戏和其他高性能多媒体应用所提供的一套底层应用程序编程接口。而directshow是direc

8、tx组件的一部分,提供对多媒体数据流的高质量捕获和回放。directshow技术是建立在directdraw和directsound组件基础之上的,它通过directdraw对显卡进行控制以显示视频,通过directsound对声卡进行控制以播放声音。 directshow可提供高质量的多媒体流的捕获和回放功能;支持多种媒体格式,包括asf(advanced systems format),mpeg(motion picture experts group),avi(audio-video interleaved),mp3(mpeg audio layer-3)和wav声音文件;可以从硬件上捕

9、获媒体数据流;可以自动检测并使用视频和音频加速硬件。因此,directshow可以充分发挥媒体的性能,提高运行速度,可以简化媒体播放、媒体间的格式转换和媒体捕获等工作。同时,它还具有极大的可扩展性和灵活性,可以由用户自己创建组件,并将这个组件加入directshow结构中以支持新的格式或特殊效果。应用程序与directshow组件以及directshow所支持的软硬件之间的关系如图1所示:二系统介绍及主要功能的实现方法(一)开发工具及运行环境1. 开发工具本程序采用c#语言和最新版的visual studio 2010(c#)+ directshow开发包 + microsoft .net f

10、ramework 4开发。2. 运行环境directx 9.0(或更高版本) + microsoft .net framework 4 + windows操作系统。3. 硬件要求摄像头一个;电脑主机最低配置:处理器 1ghz 内存 512mb 磁盘空间 850mb;电脑主机推荐配置:处理器 2ghz 内存 2gb 磁盘空间(最小值) 850mb;(二)主要功能以及实现方法1. 视频预览程序主界面:(1)程序运行后会自动搜索本地计算机可用视频设备并将其一一列举供用户选择,主要代码如下:/列举视频设备并将其添加到combobox1foreach(dsdevicedsindsdevice.getde

11、vicesofcat(filtercategory.videoinputdevice) combobox1.items.add(ds.name); combobox2.items.add(); /列举解码器并将其添加到combobox2 foreach(dsdevicedsindsdevice.getdevicesofcat(filtercategory.videocompressorcategory) combobox2.items.add(ds.name); (2)点击打开视频,实现视频预览,主要代码如下: 代码一图像初始化:/获取igraphbuilder接口对象graphbuilder

12、 = (igraphbuilder) new filtergraph();/获取icapturegraphbuilder2接口对象icapturegraphbuilder2 capturegraphbuilder = null;capturegraphbuilder = (icapturegraphbuilder2) new capturegraphbuilder2();/获取igraphbuilder接口的imediacontrol对象mediacontrol = (imediacontrol) this.graphbuilder;/获取m_graphbuilder 接口对象的imediae

13、ventex对象mediaeventex = (imediaeventex)graphbuilder;/设置icapturegraphbuilder2的igraphbuilder接口为当前对象int hr = capturegraphbuilder.setfiltergraph(this.graphbuilder);dserror.throwexceptionforhr(hr);/添加视频源设备hr = graphbuilder.addfilter(thedevice, source filter);dserror.throwexceptionforhr(hr);/添加视频解码器if (the

14、compressor != null) hr = graphbuilder.addfilter(thecompressor, compressor filter); dserror.throwexceptionforhr(hr);/通过thevideodevice(ibasefilter)视频接口对象的preview pin预览hr=capturegraphbuilder.renderstream(pincategory.preview, mediatype.video, thedevice, null, null);dserror.throwexceptionforhr(hr);/获取the

15、videodevice的iamvideocontrol对象ivideowindow videowindow = null;videowindow = (ivideowindow) graphbuilder;/设置panel1为视频显示窗口hr = videowindow.put_owner(panel1.handle);dserror.throwexceptionforhr(hr);/去除视频窗口边框hr=videowindow.put_windowstyle(windowstyle.child windowstyle.clipchildren);dserror.throwexceptionf

16、orhr(hr);/把视频窗口绑定在panelhr = videowindow.setwindowposition(0, 0, panel1.width, panel1.height);dserror.throwexceptionforhr(hr);/释放接口资源marshal.releasecomobject(capturegraphbuilder);代码二开始预览:imediacontrol对象接口提供三种控制状态:开始(run())、暂停(pause())和停止(stop())。预览界面如下图所示:开始预览代码如下:if (mediacontrol != null) mediacontr

17、ol.run();2. 视频录制视频录制原理及实现方法与视频预览大体相同,用户可以根据不同需求选择不同的解码器来录制不同质量的视频文件,而其实现方法也十分简单只需在图像初始化的时候新建ibasefilter和ifilesinkfilter两个接口对象,从icapturegraphbuilder2接口上调用setoutputfilename函数将视频文件输出,与此同时从icapturegraphbuilder2接口调用renderstream函数选择解码器来对视频流进行压缩。视频录制相关代码如下:/初始化ibasefilter接口ibasefilter mux;/初始化ibasefilter接口

18、ifilesinkfilter sink;/输出视频文件hr = capturegraphbuilder.setoutputfilename(mediasubtype.avi, c:video.avi, out mux, out sink);dserror.throwexceptionforhr(hr);/选择解码器对视频流进行压缩hr = capturegraphbuilder.renderstream(pincategory.capture, mediatype.video, thedevice, thecompressor, mux);dserror.throwexceptionforh

19、r(hr);/释放接口资源marshal.releasecomobject(mux);marshal.releasecomobject(sink); 3. 图片采集拍照界面集图片采集、参数设定、查看、管理等功能为一体,用户可以根据不同需要设置图片质量,其友好的操作界面及方便的管理功能,令人耳目一新。拍照模式主界面:(1)图片采集的实现方法是在图像初始化成功的基础之上,利用directshow开发包提供的图像捕获接口(samplegrabber)接口进行图片捕获,samplegrabber图像捕获效率高,利用该接口下的回调函数(setcallback)可轻松实现对源视频流的捕获并将其写入bmp文

20、件中,这样便实现的对源视频流的图片采集。图片采集相关代码如下:/创建ibasefilter接口对象capfilteribasefiltercapfilter;/创建isamplegrabber接口对象sampgrabberisamplegrabber sampgrabber; /当”拍照”按钮按下时,调用isamplegrabber对象的setcallback函数hr = sampgrabber.setcallback(this, 1);/将捕获到的源视频流转换并将其写入bmp文件中int w = videoinfoheader.bmiheader.width;int h = videoinf

21、oheader.bmiheader.height;if( (w & 0x03) != 0) | (w 4096) | (h 4096) )return;int stride = w * 3;gchandle handle = gchandle.alloc( savedarray, gchandletype.pinned );int scan0 = (int) handle.addrofpinnedobject();scan0 += (h - 1) * stride;bitmap b = new bitmap( w, h, -stride, pixelformat.format24bpprgb, (intptr) scan0 );(2)图片采集参数设定

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论