多媒体技术实验报告一_第1页
多媒体技术实验报告一_第2页
多媒体技术实验报告一_第3页
多媒体技术实验报告一_第4页
全文预览已结束

付费下载

下载本文档

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

文档简介

多媒体技术实验报告一实验题目和目的摄像头捕捉视频和静止图像实验目的:熟悉和掌握使用WindowsAPI进行编程的基本原理和方法。熟悉各种不同的视频文件格式。实验要求基本要求:利用windowsapi实现简单的视频捕捉功能Bonus:连续捕捉静止图像提示:使用winxp版本可以考虑采用vfw(videoforwindows)来实现,使用win7版本可以考虑采用directshow来实现,使用win8版本可以考虑采用MediaFoundation或directshow来实现。实验内容设计一个程序,有界面,可以调用摄像头进行视频捕捉并保存成文件。可以进行开始暂停。可以进行捕捉每一帧的画面并通过画图文件保存。1、创建一个基于对话框的工程,如VideoPlay。2、在对话框上添加相应的按钮,实现如动态捕捉、播放、连续捕捉等项功能。可考虑添加滑动条(slider控件)用来反映目前的播放位置,等等。3、为各个按钮添加相应的函数。4、调试,运行。实验平台实验硬件:个人PC机,摄像头实验软件:VS2013,摄像头驱动程序,VFW开发包实验平台:windows实验原理VideoforWindows是WIN32SDK中多媒体编程SDK的视频开发工具。在微软的VisualC++中提供了VideoforWindows的头文件vfw.h和库文件vfw32.lib。实验过程1、用VisualC++的AppWizard生成一个基于对话框的应用程序,并在StdAfx.h中加入以下内容:#include<vfw.h>#pragmacomment(lib,"vfw32.lib")2、修改对话框资源,添加静态控制IDC_VIDEO和按钮“捕捉”、“停止”、“设置格式”、“设置图像源”、“设置压缩”、“单帧捕获”、“定帧”、“退出”。(其实最重要的是“设置格式”、“设置图像源”、“设置压缩”、“单帧捕获”、“退出”,其它可以将其设置成不可见,同时也可将其保留,以便将来扩展其功能时可用。)3、在对话框的头文件中加入以下说明。HWNDm_hCapWnd;//预示窗口BOOLm_bInit;//捕捉器初始化CAPDRIVERCAPSm_CapDrvCap;//CAPDRIVERCAPS结构,定义驱动器性能CAPSTATUSm_CapStatus;//CAPSTATUS结构,定义捕捉窗口当前状态CAPTUREPARMSm_Parms;//CAPTUREPARMS结构,定义捕捉参数CStringm_CapFileName;//捕捉文件名称4、在对话框类的OnInitDialog()函数中加入捕捉器初始化以及连接驱动器。m_bInit=FALSE;CWnd*pWnd=AfxGetMainWnd()->GetDlgItem(IDC_VIDEO);//得到预示窗口指针CRectrect;pWnd->GetWindowRect(&rect);//得到窗口大小m_hCapWnd=capCreateCaptureWindow((LPTSTR)TEXT("视频捕捉测试程序"),WS_CHILD|WS_VISIBLE|WS_EX_CLIENTEDGE|WS_EX_DLGMODALFRAME,0,0,rect.Width(),rect.Width(),pWnd->GetSafeHwnd(),0);//设置预示窗口ASSERT(m_hCapWnd);if(capDriverConnect(m_hCapWnd,0)){//连接第0号驱动器m_bInit=TRUE;//得到驱动器的性能capDriverGetCaps(m_hCapWnd,sizeof(CAPDRIVERCAPS),&m_CapDrvCap);if(m_CapDrvCap.fCaptureInitialized){//如果初始化成功capGetStatus(m_hCapWnd,&m_CapStatus,sizeof(m_CapStatus));//得到驱动器状态capPreviewRate(m_hCapWnd,30);//设置预示帧频capPreview(m_hCapWnd,TRUE);//设置预示方式}else{//初始化未成功AfxMessageBox("视频捕捉卡初始化失败!");AfxGetMainWnd()->PostMessage(WM_CLOSE);}}else{//未能连接到驱动器AfxMessageBox("与视频捕捉卡连接失败!");AfxGetMainWnd()->PostMessage(WM_CLOSE);}m_CapFileName="c:\\Capture.avi";//设置捕获文件capFileSetCaptureFile(m_hCapWnd,m_CapFileName.GetBuffer(255));5、在对话框类中加入响应“设置格式”消息的函数OnFormat()。capDlgVideoFormat(m_hCapWnd);//设置格式对话框6、在对话框类中加入响应“设置图像源”消息的函数OnSource()。capDlgVideoSource(m_hCapWnd);//设置图像源对话框7、在对话框类中加入响应“设置压缩”消息的函数OnCompress()。capDlgVideoCompression(m_hCapWnd);//设置压缩对话框8、在对话框类中加入响应“捕捉”消息的函数OnCapture()。capCaptureGetSetup(m_hCapWnd,&m_Parms,sizeof(m_Parms));//得到设置参数if(capCaptureSetSetup(m_hCapWnd,&m_Parms,sizeof(m_Parms))==TRUE){BOOLsuc=TRUE;suc=capCaptureSequence(m_hCapWnd);//捕捉到文件returnsuc};elsereturnFALSE;注意点:在VideoCaptureDlg.h中把afx_msgvoidOnCapture();改为afx_msgBOOLOnCapture();在VideoCaptureDlg.cpp修改为BOOLCVideoCaptureDlg::OnCapture()//捕捉9、在对话框类中加入响应“定帧”消息的函数OnFreezed()。capPreview(m_hCapWnd,FALSE);//定帧10、在对话框类中加入响应“单帧捕获”消息的函数OnImage()。capGrabFrameNoStop(m_hCapWnd);//截获当前图像capEditCopy(m_hCapWnd);//将图像拷贝到剪贴板11、在对话框类中加入响应“停止”消息的函数OnStop()。capCaptureStop(m_hCapWnd);//停止捕捉12、在对话框类中加入响应“退出”消息的函数OnExit()退出前断开捕捉器与驱动器的连接,并关闭窗口。capDriverDisconnect(m_hCapWnd);CDialog::OnCancel();附加说明:以上添加的按钮用于捕捉图像(button);另外添加(StaticText)用于创建并设置捕获窗口;保存图像的方法:点击“单帧捕获”——>打开附近

温馨提示

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

评论

0/150

提交评论