论文无忧网提供:计算机毕业论文范文|计算机毕业设计|计算机毕业论文
栏目导航 ASP Java Web .NET VB6.0 JAVA VC VF DELPHI PB 计算机网络 计算机科学与技术 PHP 安卓APP 其他 C# 代写论文
当前位置: > 计算机 > VC >

B(VC)VC人脸识别技术设计及实现

在AVICap编程时,由这三个数据结构所定义的变量,在程序中都有相对应的函数来设置和获得这些变量的每个数据成员的具体域值,而且关于这三个数据结具体的定义域,我们可以参看MSDN。此外,VIDEOHDR作为定义视频数据块头信息的数据结构,是我们采集视频流的重要信息来源,它的具体定义如下:

内容来自www.paper51.com

typedef struct videohdr_tag{ paper51.com

//pointer to locked data buffer(指向被锁定的数据缓冲的指针) 内容来自论文无忧网 www.paper51.com

LPBYTE lpData;                 

内容来自论文无忧网 www.paper51.com

//Length of data buffer(数据缓冲的大小)

内容来自论文无忧网 www.paper51.com

DWORD dwBufferLength;           内容来自论文无忧网 www.paper51.com

//Bytes actually used(实际使用的字节数)

内容来自论文无忧网 www.paper51.com

DWORD dwBytesUsed;              内容来自论文无忧网 www.paper51.com

//Milliseconds from start of srteam(视频流开始的时间,以毫秒为单位)

copyright paper51.com

DWORD dwTimeCaptured;          内容来自www.paper51.com

//for client’s use(用户使用的作用域) copyright paper51.com

DWORD dwUser;                           

内容来自论文无忧网 www.paper51.com

//assorted flags (see defines)

http://www.paper51.com

DWORD dwFlags;                          

内容来自论文无忧网 www.paper51.com

//reserved for driver(为设备保留的作用域) http://www.paper51.com

DWORD dwReserved[4];                 http://www.paper51.com

} VIDEOHDR,NEAR * PVIDEOHDR,FAR * LPWIDEOHDR 内容来自www.paper51.com

在我们用程序来获取采集到的视频流信息时,往往需要通过访问VIDEOHER这个数据结构的lpData(指向数据缓存的指针)和dwBufferLength(数据缓存的大小)数据成员来实现。VIDEOHER数据结构在程序中没有函数显式地设置和获取,但一旦程序采集到视频流,我们就可以通过访问由VIDEOHER定义的变量的lpData(指向数据缓存的指针)和dwBufferLength(数据缓存的大小)数据成员来获得视频流中具体的图像数据信息。 copyright paper51.com

3.2.2.2函数实现 内容来自www.paper51.com

       以下罗列了在采集视频流的过程中需要用到的函数,包括AVICap为我们提供的函数和自定义的回调函数(所谓回调函数,就是指由用户自己定义但是却不能由用户自己调用的函数,程序通过回调函数的设置函数,让系统适时地自动调用用户定义的这些回调函数)。 内容来自www.paper51.com

(1)采集窗口的创建函数 内容来自www.paper51.com

              capCreateCaptureWindow http://www.paper51.com

       (2)三个回调函数及与之对应的回调函数的设置函数

内容来自论文无忧网 www.paper51.com

              ErrorCallbackProc,capSetCallbackOnError;

http://www.paper51.com

              StatusCallbackProc,capSetCallbackOnStatus; 内容来自论文无忧网 www.paper51.com

              VideoCallbakcProc,capSetCallbackOnVideoStream;

内容来自论文无忧网 www.paper51.com

       (3)连接及断开采集窗口和采集设备的函数

内容来自论文无忧网 www.paper51.com

              capDriverConnect 内容来自论文无忧网 www.paper51.com

              capDriverDisconnect

内容来自论文无忧网 www.paper51.com

       (4)获取采集设备硬件性能的函数

paper51.com

              capDriverGetCaps

http://www.paper51.com

       (5)获取及设置采集参数的函数

内容来自www.paper51.com

              capCaptureGetSetup 内容来自论文无忧网 www.paper51.com

              capCaptureSetSetup http://www.paper51.com

       (6)开始及终止采集的函数 paper51.com

              capCaptureSequenceNoFile copyright paper51.com

              capCaptureAbort

http://www.paper51.com

       (7)设置视频格式的函数 copyright paper51.com

              capDlgVideoFormat 内容来自www.paper51.com

       (8)采集前的视频预览函数

内容来自www.paper51.com

              capPreviewRat

内容来自www.paper51.com

              capPreview http://www.paper51.com

       以上所列的函数除了三个回调函数的定义以外,其余函数的定义和功能说明都可以在MSDN中找到。自定义的三个回调函数:

内容来自www.paper51.com

       (1)出错回调函数

http://www.paper51.com

LRESULTCALLBACK EXPORT ErrorCallbackProc(HWND hWnd,int nErrID,LPSTR lpErrorText)

copyright paper51.com

//hWnd:       Applocation main window handle paper51.com

//nErrID:       Error code for the encountered error 内容来自www.paper51.com

//lpErrorText:   Error text string for theencountered error

copyright paper51.com

{ paper51.com

            if(nErrID==0) 内容来自论文无忧网 www.paper51.com

           return TRUE;    //Clear out old errors... http://www.paper51.com

            AfxMessageBox(lpErrorText,MB_OK,NULL);//在屏幕上显示消息框的函数

内容来自www.paper51.com

             returnTRUE;

内容来自www.paper51.com

}

paper51.com

       (2)状态回调函数

copyright paper51.com

LRESULT FAR PASCAL StatusCallbackProc(HWND hWnd,int nID,LPSTRlpStatusText)

copyright paper51.com

//hWnd:        Application main window handle

paper51.com

//nID:         Status code for the current status

copyright paper51.com

//lpStatusText:   Status text string for the crurrentstatus

内容来自论文无忧网 www.paper51.com

{

内容来自www.paper51.com

             staticint CurrentID; paper51.com

     内容来自论文无忧网 www.paper51.com

            //theCAP_END message sometimes overwrites a useful statistics message;

内容来自www.paper51.com

             if(nID==IDS_CAP_END)

paper51.com

           {

http://www.paper51.com

                 if((CurrentID==IDS_CAP_STAT_VIDEOAUDIO)|| copyright paper51.com

                    (CurrentID==IDS_CAP_STAT_VIDEOONLY))

http://www.paper51.com

               return(TRUE); paper51.com

           } copyright paper51.com

            CurrentID=nID; 内容来自www.paper51.com

            return(LRESULT)TRUE;

copyright paper51.com

}

内容来自论文无忧网 www.paper51.com

       (3)视频回调函数 http://www.paper51.com

LRESULT FAR PASCAL VideoCallbackProc(HWND hWnd,LPVIDEOHDR lpVHdr) 内容来自www.paper51.com

{

paper51.com

//得到视频帧的实际字节数

paper51.com

            ((CMainFrame*)AfxGetMainWnd())->m_dibinfo.bitmapheader.

http://www.paper51.com

           biSizeImage=lpVHdr->dwBytesUsed; 内容来自www.paper51.com

            memcpy(((CMainFrame*)AfxGetMainWnd())->m_dibinfo.buffer+

http://www.paper51.com

             ((CMainFrame*)AfxGetMainWnd())->m_dibinfo.VideoFormatSize,

内容来自论文无忧网 www.paper51.com

            lpVHdr->lpData,lpVHdr->dwBytesUsed); copyright paper51.com

            (((CMainFrame*)AfxGetMainWnd())->GetActiveView())-> 内容来自www.paper51.com

           InvalidateRect(NULL,FALSE); 内容来自论文无忧网 www.paper51.com

            return(LRESULT)TRUE;

内容来自www.paper51.com

}

copyright paper51.com

其中VideoCallbackProc回调函数最为重要。系统采集一帧图像后调用该函数。

内容来自论文无忧网 www.paper51.com

------分隔线----------------------------
联系方式