王維 楊路



摘 ?要:針對傳統考勤系統考勤效率低下等問題,開發了人臉識別考勤系統。該系統使用Linux操作系統,選用Qt Creator 4.3.0開發平臺,使用SQLite記錄后臺數據庫相關信息,基于OpenCV,實現了人臉識別、用戶基本信息管理、人臉識別打卡、查詢考勤記錄等功能。經測試,該系統正常運行,較好地完成了考勤工作。
關鍵詞:人臉識別;OpenCV;考勤系統;Qt Creator
中圖分類號:TP391.41 ? ? 文獻標識碼:A
Design and Implementation of Attendance System based on Face Recognition
WANG Wei, YANG Lu
(College of Computer Science, Xianyang Normal University, Xianyang 712000, China)
wangw850@126.com; 1913205489@qq.com
Abstract: Aiming at low attendance efficiency of traditional attendance systems, this paper proposes to develop a face recognition attendance system. The system adopts the Linux operating system and Qt Creator 4.3.0 development platform, and uses SQLite to record background database related information. Based on the OpenCV library, it realizes functions such as face recognition, user basic information management, face recognition clock-in, and attendance record query. Test results show that the proposed system works normally and the attendance work is well completed.
Keywords: face recognition; OpenCV; attendance system; Qt Creator
1 ? 引言(Introduction)
當前考勤管理系統應用十分廣泛,主要借助RFID技術、指紋識別技術及人臉識別技術等識別方式。RFID考勤簽到是利用RFID自動識別技術、紅外對射,及后臺管理軟件集成的一種考勤簽到方案,但該技術不能保證證件與持卡人的絕對統一,識別精度較低[1-2]。指紋識別技術通過采集指紋,保存特征碼到指紋數據庫,進行身份識別時,通過特征匹配算法將采集到的指紋和指紋數據庫中的指紋進行匹配,從而進行身份的驗證[3]。但指紋數據被盜后,會造成信息的丟失[4]。而人臉識別技術能夠有效地避免以上問題,同時識別精度較高,安全性也較高。因此,人臉識別技術成為考勤系統最為合適的選擇。
人臉識別技術是以生物特征為基礎,借助計算機技術,通過對人臉的特征進行分析與確認,實現對不同人臉的精確識別。人臉識別技術包含三個步驟,即人臉圖像采集、人臉檢測及人臉識別。人臉圖像采集是借助攝像頭采集人臉的圖像,比如靜態圖像、動態圖像,不同位置、不同表情等方面的圖像;人臉檢測主要用于人臉識別的預處理,即在圖像中準確定位人臉的位置和大小,主流的人臉檢測算法是采用Adaboost學習算法;人臉識別是將檢測到的人臉與已存的人臉庫中的人臉進行對比,得出兩者的相似度值[5-6]。
2 ? 系統總體設計(Overall system design)
整個系統使用Linux操作系統,基于Qt Creator 4.3.0開發平臺,選用SQLite數據庫管理系統,使用OpenCV完成開發工作。其中,OpenCV為開源且跨平臺的計算機視覺和機器學習軟件庫,由C語言和少量的C++語言實現,屬于輕量級并且運行效率較高的軟件庫,能夠運行在Windows、Linux等操作系統上,可移植性好。OpenCV向上層提供大量的函數接口,不僅包括C++接口,同時也有Java、Python、C#等許多語言接口,主要功能是實現計算機對圖像數據的處理,以及計算機視覺方面的相關算法,在物體識別、圖像分割、人臉識別等領域應用廣泛[7]。
人臉識別考勤系統的設計與實現的總體功能模塊如圖1所示。
用戶系統功能詳細介紹如下:
(1)實時顯示時間:在用戶界面實時顯示當前的時間,用戶可以看到當前打卡的時間是否遲到。
(2)顯示公告信息:根據時間滾動查詢公告信息表中的內容,將公告的內容和時間顯示在界面中。
(3)人臉識別打卡:通過采集用戶的人臉圖像信息打卡成功,并且在考勤信息表中添加用戶的考勤信息。
(4)查詢考勤記錄:用戶可以通過工號查詢自己的考勤記錄,使得考勤信息透明化。
管理員系統功能詳細介紹如下:
(1)管理員注冊:管理員注冊時需要添加自己的基本信息,也要采集面部信息才能完成注冊。
(2)管理員登錄:管理員通過賬號和人臉識別進入系統,如果兩者任意一個與數據庫的內容不匹配將登錄失敗。
(3)用戶信息管理:系統管理員可以對用戶基本信息進行錄入和面部圖像信息采集以及查詢、刪除用戶信息。
(4)公告信息管理:管理員可以發布、刪除或者修改自己權限內所管理的通知內容。
(5)考勤信息統計:當用戶打卡成功后,管理員登錄管理員系統進入考勤信息模塊,該模塊將會展示所有用戶的考勤狀態,并且以餅狀圖和數字的形式顯示考勤信息。
(6)管理員信息管理:管理員分為普通管理員和超級管理員,將管理員的權限劃分等級,不同的權限處理不同的事務。
3 ? 系統具體實現(System implementation)
3.1 ? 用戶信息管理模塊算法設計
該模塊是在menu.ui界面完成主要工作。信息錄入,主要錄入姓名、工號、性別等信息。錄入好用戶信息后點擊addbt按鈕觸發on_addbt_clicked()槽函數,該函數使用insert into語句將用戶的基本信息插入用戶信息表中。點擊select按鈕觸發on_selectbt_clicked()槽函數,完成對用戶信息的查詢功能。采集人臉信息時點擊openbt按鈕,觸發on_openbt_clicked()槽函數,完成打開攝像頭并截取十張人臉圖像信息,并進行處理。點擊“開始訓練”按鈕觸發on_starttrainbt_clicked()槽函數,在函數中啟動線程完成對采集信息的訓練。
用戶信息添加流程圖如圖2所示。
3.2 ? 人臉識別打卡模塊算法設計
人臉識別打卡模塊先采集人臉照片訓練人臉模型,然后進行人臉檢測,實現打卡功能,具體算法如下:
(1)準備人臉數據集:
通過攝像頭采集不同的人臉照片,對照片進行處理,將處理好的照片全部放到指定文件夾中存儲。人臉檢測模型由OpenCV官方提供,但面部信息識別模型需要自己訓練。
圖像采集部分負責采集圖像,將來自外部設備的圖像轉換成可處理的數字圖像格式。選用Z301P芯片的USB攝像頭,驅動程序采用Linux下常用的通用驅動spca5xx。Linux通過讀寫設備文件的方式訪問和控制USB攝像頭,使用統一程序設計接口V4L(Video4Linux)實現視頻圖像的采集[8]。
(2)數據標記好后,使用OpenCV提供的相關訓練模型接口進行模型的訓練:
Ptr
Model->train(images,labels);//將采集的圖片路徑和標簽傳參,訓練人臉模型。
Model->save("MyFaceFisherModel.xml");//訓練模型是xml文件,將文件保存起來。
(3)訓練好文件后進行人臉檢測。通過攝像頭打卡進行人臉信息的采集,框出人臉的位置:
CascadeClassifier cascade;
cascade.load("haarcascade_frontalface_alt.xml");//加載人臉檢測的模型。
cascade.detectMultiScale(gray,faces,
1.1,2,0,CV_HAAR_SCALE_IMAGE,Size(30,30));//檢測人臉的方法
(4)將檢測到的人臉信息進行識別:
Ptr
modelPCA->load("MyFaceFisherModel.xml");//加載剛才訓練好的人臉模型
predict=model->predict(image);//返回預測的標簽
(5)人臉識別后用戶信息插入功能:
如果五次預測的標簽相同,說明識別正確。當識別出正確人臉信息之后使用select語句查詢SQLite數據庫中考勤信息表的用戶信息。如果用戶信息可以查詢到已經打卡則調用QMessageBox::about(this,"提示",message);顯示已經打卡,如果用戶信息查詢不到信息則調用QMessageBox::about(this,"提示",message)顯示打卡成功,并且將打卡信息使用insert into語句插入考勤信息表中。
人臉識別打卡模塊流程圖如圖3所示。
4 ? 系統測試(System testing)
系統經過測試,能夠正常運行。其中,用戶信息管理模塊實現了普通管理員對自己所管理用戶的個人基本信息進行錄入,同時實現了對用戶面部圖像信息的采集和識別模型的訓練。單擊“打開攝像頭”按鈕,攝像頭獲取圖像信息,并且輸出到屏幕;單擊“采集頭像”按鈕,通過攝像頭截取十張人臉圖片信息,放入指定文件夾;選擇訓練生成的文件和訓練文件,單擊“開始訓練”,在指定文件夾下生成訓練好的模型。用戶信息管理模塊測試運行界面圖如圖4所示。
用戶人臉識別打卡模塊的主要功能是打開攝像頭采集用戶面部圖像信息,與之前訓練好的模型進行對比,對比成功則將用戶基本信息插入考勤信息表中并顯示打卡成功。用戶人臉識別打卡模塊測試運行界面圖如圖5所示。
5 ? 結論(Conclusion)
該系統基于Linux操作系統,使用Qt Creator 4.3.0開發平臺進行開發,使用OpenCV當中的人臉識別相關接口實現人臉識別打卡模塊,使用SQLite數據庫存儲和統計系統需要的所有信息。系統能夠正常工作,界面交互性好,操作簡單,而且具有一定的可移植性,能夠完成公司或者學校考勤工作的基本業務流程,更有效地完成了考勤工作,提高了管理者的工作效率。
參考文獻(References)
[1] 張智文.射頻識別技術理論與實踐[M].北京:中國科學技術出版社,2008:286-305.
[2] 代懋玥.基于Web和RFID技術的人事考勤管理系統的設計與實現[D].成都:電子科技大學,2019.
[3] 劉曉莉,劉曉靜.基于指紋識別技術的考務管理系統[J].辦公自動化,2021(04):61-62.
[4] 季善東.指紋識別技術與考勤系統應用研究[D].南京:南京郵電大學,2017.
[5] 梁文莉.基于獨立成分分析的人臉識別算法研究[D].西安:西安科技大學,2012.
[6] 朱偉.OpenCV圖像處理編程實例[M].北京:電子工業出版社,2016:3-19.
[7] LI Y, LI Y H, LI H R. Face check in system based on OpenCV[J]. International Core Journal of Engineering, 2021, 7(4):274-278.
[8] 周錦陽,吳哲,宋廣.基于嵌入式Linux的視頻通信系統設計與實現[J].船舶電子工程,2019,39(10):101-105.
作者簡介:
王 ?維(1981-),女,碩士,講師.研究領域:智能信息處理,嵌入式系統.
楊 ? 路(1996-),男,本科生.研究領域:軟件開發.