






摘要:文章設計并實現了一種基于Python和OpenCV 的學生歸寢統計系統。該系統利用OpenCV 庫進行人臉識別,將學生人臉特征數據存儲于數據庫中,通過攝像頭實時采集人臉圖像并與數據庫比對,實現學生歸寢信息的統計與分析。測試結果表明,系統人臉識別準確率達到99.8%,具有低成本、高實用性的特點。
關鍵詞:人臉識別;OpenCV;歸寢系統
中圖分類號:TP391.4 文獻標識碼:A
文章編號:1009-3044(2025)06-0046-03 開放科學(資源服務)標識碼(OSID):
0 引言
傳統大學校園統計在寢學生信息時,一般依靠門禁一卡通系統或人像識別閘機的數據進行統計。傳統的一卡通系統存在“認卡不認人”的缺點,“認卡不認人”會出現人卡不符的情況,不能精確識別出歸寢學生[1-2];而人像識別閘機需要在每個宿舍樓同時安裝多臺閘機設備,這也是一筆不小的費用。本文針對上述問題,設計并實現了一種基于Python和OpenCV的低成本、高實用性的學生歸寢統計系統,利用攝像頭實時采集出入寢室學生的圖像,實現學生在寢數據的實時統計。
1 系統總體設計
1.1 相關理論和技術
人臉識別(Face Recognition)是一種依據人的面部特征(如統計或幾何特征等),自動進行身份識別的生物識別技術,又稱為面像識別、人像識別、相貌識別、面孔識別、面部識別等[3-4]。本文系統使用Python 與OpenCV技術實現,OpenCV(Open Source ComputerVision Library)是一個開源的跨平臺計算機視覺庫,內部實現了圖像處理和計算機視覺方面的諸多通用算法,在人臉識別領域有廣泛的應用。Numpy庫是標準的數據處理分析工具,是Python實現數據排列、矢量計算以及高效率計算分析工作的幫助工具。Numpy 庫的最主要作用是分析基本數據[5]。本文中,使用OpenCV進行人臉檢測、人臉特征提取、人臉識別模型訓練與分類功能。
1.2 邏輯結構
根據前文對人臉識別的場景和實際需求的介紹,基于OpenCV的學生歸寢統計系統的邏輯結構設計為3個部分,分別是人臉特征學習訓練部分、實時抓拍部分和統計展示部分。整個系統的邏輯結構設計如圖1 所示。
學習訓練部分:這一部分邏輯主要是將不同場景下學生人臉的照片灰度化,對灰度化后的人臉數據和對應學生的標簽進行訓練,將訓練后的人臉特征數據與對應學生標簽保存到數據庫中。
實時抓拍部分:這一部分邏輯主要是抓拍進出寢室學生的人臉,提取人臉特征后與數據庫中學生人臉特征比對,得出該學生出入寢室的狀態。
統計展示部分:這一部分統計分析學生歸寢數據并以報表形式展示,如當日未歸寢學生數量、所屬班級等。
1.3 系統結構設計
本系統根據邏輯結構進行系統結構的設計,系統分為3個獨立的子系統分別部署運行,3個子系統是:學習訓練子系統、實時抓拍子系統和統計展示子系統。學習訓練子系統實現將學生提供的不同場景照片中的人臉信息轉為人臉特征信息并存入數據庫中;實時抓拍子系統實時調取攝像頭抓取進出寢室的學生人臉信息,并與特征庫中的數據進行比對,并將比對結果存入數據庫中;統計展示子系統以報表的形式展示學生的歸寢統計數據。
3個子系統可以根據具體功能模塊進行劃分,模塊劃分如表1所示。
2 系統實現
系統基于Linux操作系統,使用Python作為開發語言,MySQL作為數據庫。利用OpenCV庫實現人臉識別功能,Numpy庫進行數據處理和分析。人臉識別算法采用OpenCV 的FaceRecognizer 類LBPHFace 方法。OpenCV提供了三種人臉識別方法,分別是LBPH 方法、EigenFishfaces方法、Fisherfaces方法。本文采用的是LBPH(Local Binary Patterns Histogram,局部二值模式直方圖)方法。在OpenCV 中,可以用函數cv2.face.LBPHFaceRecognizer_create()生成LBPH識別器實例模型,然后應用cv2.face_FaceRecognizer.train()函數完成訓練,最后用cv2.face_FaceRecognizer.predict()函數完成人臉識別。
本系統的核心功能子系統是學習訓練子系統和實時人臉抓拍子系統,下面將講解這兩部分程序的實現邏輯。學習訓練子系統根據學生提供的不同時期、不同角度、不同場景的照片經過學習與訓練后提取出學生人臉的信息與特征,并將信息存入數據庫中,同時該子系統會接收實時抓拍子系統中攝像頭抓拍到的無法識別的照片,經過人工識別確認后,將抓拍到的照片同該同學的其他照片一起再次經過學習與訓練,形成新的學習人臉的信息與特征庫。
學習訓練子系統的程序邏輯如圖2所示。
3 系統測試
系統測試環境為:操作系統CentOS 8,CPU:8核、3.2 GHz、64 G內存配置,系統未做分布式部署。測試過程為收集一棟宿舍樓所有學生照片,包含證件照、正面、左右側面及生活照用來訓練,生成學生人臉標準特征庫數據,再在學生宿舍樓安裝兩個槍機攝像頭分別抓拍進出宿舍的學生,安排4組學生進行測試,每組學生250名,于中午與傍晚分別進行測試,測試結果數據如表2所示。
從表中可以看出,在以上測試條件下,測試成功率可以達到99.8%,測試不通過的數據是在傍晚現場光線較暗情況下測試的結果,再打開宿舍門口大燈后測試成功率提高。
4 結論
該系統基于Linux 平臺開發,使用Python 與OpenCV實現學生歸寢數據統計功能。該系統以較低的成本和較高的實用性實現學生宿舍歸寢數據的統計,同時該系統部署簡單,易維護,具有一定的可移植性。在系統使用過程中,發現一些不足之處將在下一版本中改進,比如避免頻繁調用攝像頭抓拍圖片,可以改為僅在有人進入監控范圍后再進行抓拍;增加人臉特征提取算法,如同時使用多種人臉特征提取算法進行比對,提高人臉識別率。通過以上改進將會進一步提高系統的識別率和可擴展性。