资源描述:
《VC捕捉摄像头图像入门源码》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、【转】VC捕捉摄像头图像入门源码VC捕捉摄像头图像入门源码(非常适合新手)(转)默认分类2009-11-0217:46:56阅读39评论0字号:大中小//此源码是我更改过的基于VFW(VideoforWindows)的源码,使用了定时器能实时的显示图像,从网上可搜到原版源码,但是原版的功能是保存为一个文件,且不能实时显示,此版本虽然能显示,但感觉反应速度不是很快,没有基于DirectShow的程序更新速度快,不过在WM_PAINT消息处理里加while(1){capGrabFrame(ghWndCa
2、p);}刷新速度就快很多了,但是这样程序就进入死循环不能再处理其他消息,至于怎样改进,就靠读者你了。//源码的任何部分都可以在MSDN里查到,请参考MSDN。#include#include#include#pragmacomment(lib,"vfw32.lib")HWNDghWndCap;//捕获窗的句柄CAPSTATUSgCapStatus;//捕获窗的状态CAPDRIVERCAPSgCapDriverCaps;//视频驱动的能力charg
3、achBuffer[20];//charszCaptureFile[]="CamCapture.AVI";/////////////////////////////////////////////////////////////////////////StatusCallbackProc:状态回调函数,使用capSetCallbackOnStatus宏来注册这个回调函数。//hWnd: 捕获窗体句柄//nID: 当前状态的状态码//lpStatusText
4、: 当前状态的文本字符///////////////////////////////////////////////////////////////////////LRESULTCALLBACKStatusCallbackProc(HWNDhWnd,intnID,LPSTRlpStatusText){if(!ghWndCap) returnFALSE;//获得捕获窗的状态capGetStatus(ghWndCap,&gCapStatus,sizeof(CAPSTATUS));//更新捕获
5、窗的大小,得到消息WM_CAP_GET_STATUSSetWindowPos(ghWndCap,NULL,0,0,gCapStatus.uiImageWidth,gCapStatus.uiImageHeight,SWP_NOZORDER
6、SWP_NOMOVE);if(nID==0){//清除旧的状态信息 SetWindowText(ghWndCap,(LPSTR)"hello"); return(LRESULT)TRUE;}//显示状态ID和状态文本wsprintf(gachBuffer,"St
7、atus#%d:%s",nID,lpStatusText);SetWindowText(ghWndCap,(LPSTR)gachBuffer);return(LRESULT)TRUE;}////////////////////////////////////////////////////////////////////////////////ErrorCallbackProc: 错误回调函数,过capSetCallbackOnError宏来注册回调//hWnd: 捕获窗
8、口句柄//nErrID: 错误代码//lpErrorText: 关于错误的文本信息///////////////////////////////////////////////////////////////////////////////LRESULTCALLBACKErrorCallbackProc(HWNDhWnd,intnErrID,LPSTRlpErrorText){if(!ghWndCap) returnFALSE; if(nErrID==0
9、) returnTRUE;//清除旧的错误wsprintf(gachBuffer,"Error#%d",nErrID);//显示错误标识和文本MessageBox(hWnd,lpErrorText,gachBuffer,MB_OK
10、MB_ICONEXCLAMATION);return(LRESULT)TRUE;}//////////////////////////////////////////////////////////////////////////////