已打包生成可執(zhí)行文件exe,可直接下載運(yùn)行,exe文件及代碼均已上傳到我的github,點(diǎn)擊傳送門,打包的具體過程及教程可見pyinstaller簡(jiǎn)明教程
WorkAttendanceSystem
一個(gè)基于opencv人臉識(shí)別的員工考勤系統(tǒng),作者某雙一流A類大學(xué)里的~一流(二流)~~~不入流學(xué)生,寫于2018/09/,python課程設(shè)計(jì)期間。
| 作者 | inspurer |
|---|---|
| QQ交流群 | 861016679 |
| 個(gè)人博客 | https://inspurer.github.io/ |
V1.0版本
項(xiàng)目結(jié)構(gòu)
mainui.py是主界面,調(diào)用face_img_register.py和face_recognize_punchcard.py 其中face_img_register.py主要實(shí)現(xiàn)錄入人臉信息功能,face_recognize_punchcard.py主要實(shí)現(xiàn)刷臉考勤功能,face_feature_storage.py屬于雞肋文件,是在調(diào)試代碼,沒什么用,舍不得刪,畢竟還有點(diǎn)參考價(jià)值。
face_recognize_punchcard_lib.py和face_recognize_punchcard.py本質(zhì)上差不多,
但是前者是給face_img_register.py專有的依賴。防止錄入兩個(gè)同樣的人臉建不同數(shù)據(jù)庫的風(fēng)險(xiǎn)。
運(yùn)行效果
1. 主界面

2. 人臉錄入

3. 刷臉考勤
這是通宵后的我,發(fā)現(xiàn)熬夜真的能讓人變丑。發(fā)誓再也不熬夜了。(?ò ? ó?)

其余的就不多做展示了,有什么問題歡迎2391527690@qq.com聯(lián)系
更新
2018/9/23更新
mainui.py-->myapp.py
face_recognize_punchcard_lib.py等雞肋文件放到useless文件夾里
運(yùn)行效率顯著提高
2018/9/25更新
解決同步性問題,新錄入的人臉能立即被識(shí)別
代碼的運(yùn)行速度少許下降
V2.0版本
老師看了我的V1.0版本后給的建議,第一,不能有太多彈窗界面,一些操作應(yīng)該放到工具欄中,而不是彈窗實(shí)現(xiàn);第二,數(shù)據(jù)保存在csv文件容易被竊讀,應(yīng)該保存到數(shù)據(jù)庫熊;第三,顯示考勤日志時(shí)應(yīng)該由自己的電子表格實(shí)現(xiàn)而不是直接調(diào)用excel?;谝陨系膯栴}和算法優(yōu)化的需要,我把代碼優(yōu)化成了V2.0,同時(shí)所以的代碼合在一個(gè)WorkAttwndanceSystem.py文件里,就人臉識(shí)別這部分代碼而言,提高了代碼復(fù)用度。
1. 全新設(shè)計(jì)的UI,更人性化的操作


這也是通宵后的我(づ ─ )づ

2. 數(shù)據(jù)更加安全,用戶不可見
人臉特征和簽到日志數(shù)據(jù)全部保存在inspurer.db數(shù)據(jù)庫文件里,更加安全;而且對(duì)人臉數(shù)據(jù)進(jìn)行了壓縮,存儲(chǔ)占用更小。
3. 注意事項(xiàng)
- 打開攝像頭后請(qǐng)保持人臉正對(duì)攝像頭,確保人臉識(shí)別開始。
- 人臉識(shí)別時(shí)做了拒絕處理,多張人臉時(shí),只取距離屏幕最近的人臉。
-
新建錄入時(shí)會(huì)自動(dòng)錄入十張人臉照片,也可手動(dòng)點(diǎn)擊完成錄入立即完成,之后就會(huì)計(jì)算人臉數(shù)據(jù)并存儲(chǔ)到數(shù)據(jù)庫中,左邊的信息欄會(huì)有相應(yīng)的信息打印。 -
開始簽到后,如不點(diǎn)擊結(jié)束簽到,程序就會(huì)一直對(duì)屏幕前的人臉進(jìn)行識(shí)別簽到,簽到狀態(tài)分三種,未識(shí)別的人臉,簽到成功,
簽到成功但是遲到了(9.00后簽到),重復(fù)簽到(此時(shí)簽到日志不會(huì)寫入到數(shù)據(jù)庫中)。 - 為確保程序穩(wěn)定性,每一個(gè)菜單里的按鈕盡量成對(duì)操作。
- 模型的問題,沒有用到tensorflow訓(xùn)練,因?yàn)槿四樧R(shí)別的模型訓(xùn)練這件事,一方面已經(jīng)非常成熟了,可以利用官方的模型;另一方面,需要海量的數(shù)據(jù),甚至數(shù)據(jù)增強(qiáng);所以在這里,我直接利用官方的模型,自己編寫算法對(duì)數(shù)據(jù)進(jìn)行處理。