肉不停h共妻h山中猎户h,精品无码一区二区三区爱欲,激情综合色综合啪啪五月丁香搜索,欲色av无码一区二区人妻

移動端
人臉識別考勤系統(tǒng)中照片采集分析
  • 關(guān)鍵詞:人臉識別,考勤系統(tǒng),采集分析
  • 資料類型:
  • 上傳時間:2012-09-04
  • 上傳人:
  • 下載次數(shù):3759
  • 需要積分:0

暫無上傳相關(guān)文件

資料簡介

  一、寫作背景
  
  基于人臉識別的考勤系統(tǒng)主要用于對公司員工的出勤統(tǒng)計,員工簽到時需要通過攝像頭采集到員工面部照片,再通過人臉識別算法從采集到的照片中取得特征值并與數(shù)據(jù)庫中預(yù)先存入的員工人臉照片的特征值進行分析比較,識別成功后報出員工的姓名,則考勤成功。本文主要介紹的是考勤機后臺管理程序中的人臉信息錄入部分的設(shè)計,也就是通過攝像頭進行員工面部信息的采集,每個員工采集若干張照片,需要保存到數(shù)據(jù)庫中,同時需要通過一定的算法保存其對應(yīng)的特征值。本文就對一張照片的采集與顯示的關(guān)鍵步驟展開闡述,并給出在VisualC++6.0實現(xiàn)的必要代碼。
  
  二、軟件支持
  
  VFW(VideoforWindows)是Microsoft1992年推出的關(guān)于數(shù)字視頻的一個軟件包,它提供了一系列應(yīng)用程序編程接口,它使應(yīng)用程序?qū)σ曨l的采集和播放變得非常容易實現(xiàn)。VFW給程序員提供VBX和AVICap窗口類的編程工具,使程序員能通過發(fā)送消息來采集、播放和編輯視頻剪輯,F(xiàn)在的計算機用戶不必專門安裝VFW,當用戶在安裝Win2dows時,安裝程序會自動地安裝配置視頻所需的組件,如設(shè)備驅(qū)動程序、視頻壓縮程序等。
  
  VisualC++6.0在支持VFW方面提供有vfw32.lib、msacm32.lib、winmm.lib等類似的庫,特別是它提供了功能強大、簡單易行、類似于MCIWnd的窗口類AVICap。AVICap為應(yīng)用程序提供了一個簡單的、基于消息的接口,使之能訪問視頻和波形音頻硬件,并能在捕獲視頻流到硬盤上的過中進行控制。AVICap支持實時的視頻流捕獲和單幀捕獲并提供對視頻源的控制。它能直接訪問視頻緩沖區(qū),不需要生成中間文件,實時性很強,效率很高。同時,它也可捕獲數(shù)字視頻并保存到文件。在捕獲視頻之前需要創(chuàng)建一個捕獲窗口,所有的捕獲操作及其設(shè)置都以它為基礎(chǔ)。用AVICap窗口類創(chuàng)建的窗口被稱為“捕獲窗口”。捕獲窗口功能強大可以進行視頻錄像(將一視頻流和音頻流捕獲到一個AVI文件中)或是畫面截取。在人臉識別考勤系統(tǒng)中主要用到畫面截取功能。下面是截取畫面時需要用到的幾個設(shè)置操作:
  
 、賱討B(tài)地同視頻采集設(shè)備連接或斷開;
  
 、谝設(shè)verlay或Preview模式對輸入的視頻流進行實時顯示;
  
  a.預(yù)覽(Preview)模式:該模式把從捕獲硬件傳來的數(shù)據(jù)送入系統(tǒng)內(nèi)存并且在捕獲窗口中使用GDI函數(shù)來顯示這些數(shù)據(jù)幀。此種模式要占用一定的系統(tǒng)資源,一般的視頻采集設(shè)備都是通過這種顯示方式工作的。
  
  b.疊加(Overlay)模式:該模式的視頻顯示不經(jīng)過VGA卡,而是將其輸出信號與VGA的輸出信號合并,形成組合信號顯示在計算機的監(jiān)視器上。在該模式下所捕捉的視頻數(shù)據(jù)的顯示不需要占用系統(tǒng)資源。
  
  ③設(shè)置捕獲速率;
  
 、茱@示控制視頻源、視頻格式、視頻壓縮的對話框;
  
 、輰⒉东@的一個單幀圖像保存為DIB格式的文件。
  
  三、實現(xiàn)原理
  
  采集照片時捕獲一幀圖像,在臨時文件夾中保存為DIB格式的位圖文件,然后通過文件類的讀操作將該位圖文件轉(zhuǎn)化為二進制的數(shù)據(jù)同時獲取數(shù)據(jù)的長度,再調(diào)用數(shù)據(jù)庫接口函數(shù)把轉(zhuǎn)化得到的二進制數(shù)據(jù)和數(shù)據(jù)的長度存入數(shù)據(jù)庫,zui后刪除臨時文件夾里的位圖文件;顯示照片時調(diào)用數(shù)據(jù)庫訪問接口函數(shù)從數(shù)據(jù)庫取出照片的二進制數(shù)據(jù)和數(shù)據(jù)的長度,再通過文件類的寫操作在臨時文件夾中生成位圖文件用來顯示,顯示完后刪除該文件。至于把圖片顯示到界面上,只需把臨時文件夾里的位圖文件通過繪圖函數(shù)顯示可以了。特征值的算法不在本文討論之列。
  
  四、實現(xiàn)流程
  
  五、關(guān)鍵程序代碼
  
 。ㄒ唬┎杉掌
  
  1.在頭文件中定義攝像頭相關(guān)的控制成員變量
  
  HWNDm-hWndCap;PP定義視頻捕捉窗口
  
  CAPDRIVERCAPSm-CapDriverCaps;PP捕獲驅(qū)動器的性能
  
  CAPSTATUSm-CapStatus;PP捕獲窗口的當前狀態(tài)
  
  2.啟動攝像頭
  
  //創(chuàng)建視頻捕捉窗口
  
  m-hWndCap=capCreateCaptureWindow(-T(”人臉錄入”),WS-CHILD|WS-VISIBLE,CAMERA-LEFT,CAMERA-TOP,CAMERA-WIDTH,CAMERAHEIGHT,m-hWnd,0);
  
  /**個參數(shù)捕捉窗口的名稱,第二個參數(shù)捕捉窗口的樣式,第三、四個參數(shù)捕捉窗口的左上角的位置坐標,第五、六個參數(shù)捕捉窗口的寬度和高度,第七、八個參數(shù)分別是捕捉窗口的父窗口的句柄和編號。*/
  
  /*將捕捉窗與默認攝像頭連接,如果連接成功則獲得捕獲驅(qū)動的性能,放在結(jié)構(gòu)變量m-Cap2DriverCaps中*/
  
  if(capDriverConnect(m-hWndCap,0))
  
  capDriverGetCaps(m-hWndCap,&m-CapDriver2Caps,sizeof(CAPDRIVERCAPS));
  
  //如果攝像頭支持疊加顯示模式則啟用疊加顯示模式
  
  if(m-CapDriverCaps.fHasOverlay)
  
  capOverlay(m-hWndCap,TRUE);
  
  else
  
  {
  
  capPreviewRate(m-hWndCap,66);//設(shè)置預(yù)覽模式的顯示速率
  
  capPreview(m-hWndCap,TRUE);//啟用預(yù)覽模式
  
  }
  
  至此,如果攝像頭正常安裝了驅(qū)動,就能正常工作了。
  
  3.采集并預(yù)覽照片
  
  界面上左邊是捕捉窗口,右邊留有和捕捉窗口同樣大小的區(qū)域用于預(yù)覽或顯示捕捉到的照片。
  
  capGrabFrameNoStop(m-hWndCap);//捕捉照片且捕捉窗口畫面不停止
  
  capFileSaveDIB(m-hWndCap,”\employee.bmp”);//保存捕捉到的照片
  
  //獲得照片句柄用于在界面顯示捕捉到的照片
  
  m-hPhotoBmp=(HBITMAP)LoadImage(AfxGetIn2stanceHandle(),”\employee.bmp”,IMAGE-BITMAP,0,0,LR-CREATEDIBSECTION|LR-LOADFROMFILE);
  
  /**個參數(shù)取應(yīng)用程序?qū)嵗浔?第二個參數(shù)照片的路徑及名稱,第三個參數(shù)照片的類型,第四、五個參數(shù)照片的寬和高,為零則使用圖像默認大小,第六個參數(shù)LR-CREATEDIB2SECTION:當圖像類型為IMAGE-BITMAP時,使函數(shù)返回一個DIB位圖,而不是一個兼容的位圖。LRLOADFROMFILE:根據(jù)照片的路徑和名稱裝載圖像。*/
  
  Invalidate(FALSE);PP重繪窗口顯示照片
  
  為了在界面顯示照片還需添加繪圖函數(shù)On2Paint():
  
  //在界面添加picture控件,命名為IDC-STATICPICTURE,并圖片控件
  
  CPaintDCdcPicture(GetDlgItem(IDC-STATIC-PIC2TURE));
  
  CRectrectPic;//定義矩形區(qū)域
  
  GetDlgItem(IDC-STATIC-PICTURE)->GetClien2tRect(&rectPic);//在圖片控件上
  
  CDCmemDC;//建立與顯示設(shè)備兼容的內(nèi)存設(shè)備場境
  
  memDC.CreateCompatibleDC(&dcPicture);
  
  memDC.SelectObject(m-hPhotoBmp);//將位圖選入內(nèi)存場境
  
  //調(diào)用缺省的窗口過程來為沒有處理的窗口消息提供缺省的處理
  
  CWnd::DefWindowProc(WM-PAINT,(WPARAM)memDC.m-hDC,0);
  
  dcPicture.BitBlt(rectPic.left,rectPic.top,rectPic.Width(),rectPic.Height(),&memDC,0,0,SRCCOPY);
  
  /*顯示位圖。前四個參數(shù)分別顯示圖片的左上角頂點的位置坐標,和圖片的寬高,第五個參數(shù)表示源設(shè)備場景的地址,第六七兩個參數(shù)表示顯示圖片的左上角頂點在源設(shè)備環(huán)境的矩形區(qū)域中的坐標,zui后一個參數(shù)表示將源矩形圖象直接復(fù)制到目標矩形上。*/
  
  4.保存照片到數(shù)據(jù)庫
  
  先把捕捉到的位圖文件轉(zhuǎn)化成二進制數(shù)據(jù),然后通過接口函數(shù)保存到數(shù)據(jù)庫中。對數(shù)據(jù)庫的操作請參考DAO或ADO編程。
  
  CFilebmpFile;//定義文件類變量
  
  if(bmpFile.Open(”\employee.bmp”,CFile::mo2deRead))//讀模式打開照片文件
  
  {LONGnLength=bmpFile.GetLength();//獲得照片的文件長度
  
  unsignedchar3pData=newunsignedchar[nLength];//申請內(nèi)存空間
  
  //如果申請到空間就讀數(shù)據(jù)到緩沖區(qū),即得到二進制數(shù)據(jù)
  
  bmpFile.Read(pData,nLength);//讀照片文件到緩沖區(qū)
  
  bmpFile.Close();//關(guān)閉文件
  
  }
  
  Employee.SavePicture(EmployeeID,&pData,nLength);//對數(shù)據(jù)庫訪問接口
  
  bmpFile.Remove(”\employee.bmp”);//刪除臨時文件夾里生成的位圖文件
  
  delete[]pData;//釋放內(nèi)存中申請的緩沖區(qū)
  
  5.斷開攝像頭
  
  capDriverDisconnect(m-hWndCap);//斷開攝像頭(二)顯示數(shù)據(jù)庫中的照片前面已經(jīng)實現(xiàn)照片的預(yù)覽功能,現(xiàn)在只要從數(shù)據(jù)庫取出照片數(shù)據(jù),生成位圖文件,取得位圖的句柄顯示問題就解決了。
  
  //通過數(shù)據(jù)庫接口得到照片的文件長度(nLength)和二進制照片數(shù)據(jù)的地址pData。
  
  unsignedchar3pData=NULL;//定義字符型指針變量
  
  employee.GetPicture(&pData,&nLength);//取照片數(shù)據(jù)
  
  //如果取到照片數(shù)據(jù)則生成位圖文件
  
  CFileoutFile(”\employee.bmp”,CFile::mode2Create|CFile::modeWrite);
  
  outFile.WriteHuge((LPSTR)pData,nLength);
  
  outFile.Close();
  
  //取得生成圖片的句柄
  
  六、總結(jié)
  
  VisualC++提供的AVICap窗口類為VC的數(shù)字視頻采集提供了很大的方便,極大增強了VC多媒體程序開發(fā)的能力。本文所描述的照片采集的過程便是基于此技術(shù),并且已經(jīng)在人臉識別考勤系統(tǒng)中作為人臉錄入模塊使用,該模塊負責在系統(tǒng)zui初運行時對人臉信息采集或是對已有人臉信息進行更新時使用。經(jīng)過多次測試該模塊運行穩(wěn)定,可以滿足需求。
  
  參考文獻:
  
  [1]劉瑋.VisualC++視頻P音頻開發(fā)實用工程案例精選[M].北京:人民郵電出版社,2005.
  
  [2]王洪濤.深入剖析VisualC++編程技術(shù)及應(yīng)用實例[M].北京:人民郵電出版社,2003.
  
  [3]張力.VisualC++編程Effectiveprogramming[M].北京:人民郵電出版社,2002.
  
  [4](美)DAVIDJ.KRUGLINSKI.VisualC++技術(shù)內(nèi)幕[M].北京:清華大學(xué)出版社,2004.
  
  [5]陳瑤,劉洋.Windows環(huán)境下實時視頻捕捉、壓縮的實現(xiàn)[J].沈陽化工學(xué)院學(xué)報,2004(1)
版權(quán)與免責聲明: 凡本網(wǎng)注明“來源:智慧城市網(wǎng)”的所有作品,均為浙江興旺寶明通網(wǎng)絡(luò)有限公司-智慧城市網(wǎng)合法擁有版權(quán)或有權(quán)使用的作品,未經(jīng)本網(wǎng)授權(quán)不得轉(zhuǎn)載、摘編或利用其它方式使用上述作品。已經(jīng)本網(wǎng)授權(quán)使用作品的,應(yīng)在授權(quán)范圍內(nèi)使用,并注明“來源:智慧城市網(wǎng)m.aiynx.com”。違反上述聲明者,本網(wǎng)將追究其相關(guān)法律責任。

本網(wǎng)轉(zhuǎn)載并注明自其它來源(非智慧城市網(wǎng)m.aiynx.com)的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或和對其真實性負責,不承擔此類作品侵權(quán)行為的直接責任及連帶責任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品第一來源,并自負版權(quán)等法律責任。

編輯精選

更多

本站精選

更多

名企推薦

更多

浙公網(wǎng)安備 33010602000006號

51久久成人国产精品麻豆| 国内少妇偷人精品视频免费| 久久人人爽人人爽人人片av高清| 免费真人视频网站直播下载| 亚洲午夜无码久久久久| 野の欲求不満な人妻在线| showtime!唱歌的大姐姐也想做| 日本特黄特色aaa大片免费| 扒开粉嫩小泬舌头伸进去视频| 无码人妻AⅤ一区二区三区蜜桃| ass大胆孕妇分娩pics| 性一交一乱一伦一色一情丿按摩| 少妇大叫太大太粗太爽了a片小说| 97无码免费人妻超级碰碰夜夜| 老司机福利导航| 久久久久亚洲av无码| 久久精品免视看国产成人不卡| 少妇无码久久一区二区三区| 人物动物交互狗aa| 99re热这里只有精品视频| 秘书被老板cao到合不拢腿| 黄页网址大全免费| 机长脔到她哭h粗话h| 亚洲精品无码久久久久秋霞| 约附近100元3小时微信| 国产精品美女久久久久| 狂躁美女大bbbbbb糟蹋| 浴室里强摁做开腿呻吟的漫画| 女公浴室xxx偷窃www| 欧美性xxxxx极品少妇| 秋霞电影网院午夜伦不卡a片| 国产精品人人妻人人爽| 群体交乱之放荡娇妻| 国产精品99无码一区二蜜桃| 久久久久蜜桃精品成人片| 色妞av永久一区二区国产av| 国产精品va在线播放我和闺蜜| 亚洲欧洲日产国码无码久久99| 一本久道中文无码字幕av| 熟妇的滚烫的肉唇翻进翻出| 被夫の上司に犯波多野结衣|