VC++_捕捉摄像头视频.doc

VC++_捕捉摄像头视频.doc

ID:55632374

大小:42.50 KB

页数:11页

时间:2020-05-21

VC++_捕捉摄像头视频.doc_第1页
VC++_捕捉摄像头视频.doc_第2页
VC++_捕捉摄像头视频.doc_第3页
VC++_捕捉摄像头视频.doc_第4页
VC++_捕捉摄像头视频.doc_第5页
资源描述:

《VC++_捕捉摄像头视频.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、VC++_捕捉摄像头视频摘要:本文主要讲述用Directshow进行视频捕捉(捕捉静态图像)的编程思路,并提供针对摄像头编程的一个视频捕捉类CcaptureVideo和一个示例。  前言  DirectShow是微软公司提供的一套在Windows平台上进行流媒体处理的开发包,与DirectX开发包一起发布。DirectShow为多媒体流的捕捉和回放提供了强有力的支持。用DirectShow开发应用程序,我们可以很方便地从支持WDM驱动模型的采集卡上捕获数据,并且进行相应的后期处理乃至存储到文件中。  DirectShow是基于COM的,

2、为了编写DirectShow应用程序,需要了解COM客户程序编写的基础知识。DirectShow提供了大量的接口,但在编程中发现还是不够方便,如果能构建一个视频捕捉类把常用的一些动作封装起来,那么就更方便了。  编程思路  为了更加容易建立视频捕捉应用程序,DirectShow提供了一个叫做CaptureGraphBuilder的对象,CaptureGraphBuilder提供IcaptureGraphBuilder2接口,该接口可以建立和控制CaptureGraph。  建立视频捕捉程序,必须首先获取并初始化IcaptureGraph

3、Builder2接口,然后选择一个适当的视频捕捉设备。选择好设备后,为该设备创建Capturefilter,然后调用AddFilter把Capturefilter添加到FilterGraph。  如果仅仅希望用摄像头来进行实时监控的话,只需要在上面的基础上调用ICaptureGraphBuilder2::RenderStream就可以了:ICaptureGraphBuilder2*pBuild;//CaptureGraphBuilder//省略初始化部分代码IBaseFilter*pCap;//Videocapturefilter.//

4、省略初始化和添加到FilterGraph部分代码pBuild->RenderStream(&PIN_CATEGORY_PREVIEW,&MEDIATYPE_Video,pCap,NULL,NULL);  DirectShow提供了一个捕捉静态图像的方法:使用SampleGrabberfilter。依次按照以下三个步骤就可以了:  第一步,定义一个类实现SampleGrabber的回调接口IsampleGrabberCB:classCSampleGrabberCB:publicISampleGrabberCB{ //在后面提供的类中具体完

5、成}CSampleGrabberCBmCB;  第二步、调用RenderStream依次把Stillpin、SampleGrabber和系统默认RendererFilter连接起来。  第三步、配置SampleGrabber以捕获数据。  视频捕捉类CCaptureVideo的具体实现//CCaptureVideo视频捕捉类头文件/////////////////////////////////////////////////////////////////////#if!defined(AFX_CAPTUREVIDEO_H__F534

6、5AA4_A39F_4B07_B843_3D87C4287AA0__INCLUDED_)#defineAFX_CAPTUREVIDEO_H__F5345AA4_A39F_4B07_B843_3D87C4287AA0__INCLUDED_///////////////////////////////////////////////////////////////////////CaptureVideo.h:headerfile/////////////////////////////////////////////////////////

7、////////////#if_MSC_VER>1000#pragmaonce#endif//_MSC_VER>1000#include#include#include#ifndefSAFE_RELEASE#defineSAFE_RELEASE(x)if(NULL!=x){ x->Release(); x=NULL;}#endifclassCSampleGrabberCB;classCCaptureVideo:publicCWnd{ friendclassCSamp

8、leGrabberCB; public:  voidGrabOneFrame(BOOLbGrab);  HRESULTInit(intiDeviceID,HWNDhWnd);  intEnumDevices

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。