彭聚森 黃艷麗 趙若冰 周瀟琦
摘 要:文章設計具有測溫及統計功能的人臉識別系統。設計包含 2個模式:防控模式和非防控模式非防控期間,學生可正常刷人臉進出;防控期間,學生需佩戴口罩并監測體溫,異常時發出警告。該設計為校園管控提供一定的參考。
關鍵詞:測溫:人臉識別;防控
中圖法分類號:TP391文獻標識碼:A
1 引言
后疫情時代,大部分高校將采取開放式管理。正常情況下,學生進出校園只需進行人臉識別,但疫情防控期間,佩戴口罩和檢測就成為必然,每天進出校園人口眾多,當未佩戴口罩時,1 秒鐘內檢測者被感染的概率是較大的,因此設計一個具有口罩識別及測溫功能的系統就顯得尤為重要。
同時,隨著科技的快速發展,人臉識別技術也在不斷地突破,尤其是在日常生活中,技術帶來的便捷大幅提高了人們的生活效率。其中,OpenCV 是特別關鍵的技術。其不僅可以應用在科研跨平臺計算機視覺和機器學習軟件庫, 也可以運行在Linux、Windows、Android 和Mac OS 操作系統上。它具有輕量級且高效的特點, 同時也提供了Python, Ruby,Matlab 等語言的接口,實現了圖像處理和計算機視覺方面的通用算法[1?4] 。
2 具有測溫及統計功能的人臉識別系統的介紹
具有測溫及統計功能的人臉識別系統是基于Opencv 跨平臺計算機視覺庫,在PyCharm 和Python平臺下進行設計開發。設計包括2 個模式:防控模式和非防控模式。非防控期間,學生可正常刷人臉進出;防控期間,學生需佩戴口罩并監測體溫。流程介紹如圖1 所示。
3 原理介紹
3.1 口罩識別原理
利用OpenCV 庫的級聯分類器,并選取了Haar 特征和Adaboost 級聯分類。機器的眼睛是攝像頭,機器看到的只有數據,也就是像素,當需要識別某一種特定的圖像時,就需要找到圖像的一系列特征,這個就是Haar 特征(Haar?like features 是用于物體識別的一種數字圖像特征)[5] 。當對圖像進行運算特征值時,由于彩色圖像的通道數較多,以及像素的數據較大,為了高效進行運算,需先將圖像轉化為灰度圖像,然后進行Haar 特征運算,而Haar 特征運算一共有14種,較為基礎的為BASIC 的5 種運算。由于要對口罩識別模型進行構建,因此為了增強模型的識別度,使用了ALL 的14 種特征運算。
3.2 測溫原理
任何物體在高于絕對零度(?273℃)時都會向外發出紅外線,而額溫槍通過傳感器接收紅外線,從而得出感應溫度數據。
4 模塊設計
4.1 信息錄入
導入cv2 模塊,調取攝像頭,拍照錄取信息。首先檢查攝像頭是否處于開啟狀態,開啟后通過攝像頭進行拍照,按“s”鍵保存照片,并按照指定的格式進行命名照片,最后釋放攝像頭和內存。
4.2 數據訓練
將保存的照片導入模塊,進行數據訓練。通過遍歷將所有圖片導入模塊,并將黑白化圖像轉換為數組;獲取圖片人臉特征及對應的id 和姓名并數字化存儲;對比臉部特征和id,以確保識別的準確性。
4.3 疫情情況下的人臉識別系統
人臉識別系統進行圖片的讀取利用了OpenCV 庫的級聯分類器,選取了Haar 特征和Adaboost 級聯分類,若檢測到鼻子、嘴巴,則證明沒有戴口罩。若未檢測到鼻子、嘴巴,則接著使用opencv 的haar 眼睛特征分類器,若未檢測到眼睛,則結束。若檢測到眼睛,則把RGB 顏色空間轉為HSV 顏色空間,進行口罩區域的檢測??谡謪^域檢測流程是把距離坐標原點較近的橫坐標作為口罩區域開始的橫坐標,離坐標原點較遠的橫坐標作為口罩區域結束的橫坐標。離坐標原點較遠的縱坐標作為口罩區域開始的縱坐標,離坐標原點較遠的縱坐標與眼睛高度2 倍的和作為口罩區域結束的縱坐標。檢測到口罩之后,對比數據,進行識別[6] 。
Haar 特征和Adaboost 級聯分類模塊運行過程如下。
face _ cascade = cv2. CascadeClassifier ( ' D:/opencv/ sources/ data/ haarcascades/ haarcascade _cdefault.xml')
eye_cascade = cv2.CascadeClassifier('D:/ opencv/sources/ data/ haarcascades/ haarcascade_eye.xml')
mouth _ cascade = cv2. CascadeClassifier ( ' D:/opencv/ sources/ data/ haarcascades/ haarcascade _ mcs _mouth.xml')
upper_body = cv2.CascadeClassifier('D:/ opencv/sources/ data/ haarcascades/ haarcascade_ upperbody. xml')
#Adjust threshold
bw_threshold = 80 # User message
font = cv2.FONT_HERSHEY_SIMPLEX
org = (30, 30)
weared_mask_font_color = (255, 255, 255)
not_weared_mask_font_color = (0, 0, 255)
thickness = 2
font_scale = 1
weared_mask = "Thank You for wearing MASK"
not_weared_mask = " Please wear MASK to d
efeat
Corona"
def name():
path = './ data/ jm/ '#names = []
imagePaths = [os.path.join(path,f) for f inos.listdir(path)]
for imagePath in imagePaths:
name = str ( os. path. split ( imagePath)
[1].split('.',2)[1])
names.append(name)
def tw():
webdu = int(input(""))
if webdu >= 37.3:
print("體溫異常,請稍等?。。ⅲ?/p>
else:
print("體溫正常")# Read video
cap = cv2.VideoCapture(0)
name()
tw()
while 1:
ret, img = cap.read()
img = cv2.flip(img, 1)
# Convert Image into gray
gray = cv2. cvtColor ( img, cv2. COLOR _BGR2GRAY)# Convert image in black and white
(thresh, black_and_white) = cv2.threshold
(gray, bw_threshold, 255, cv2.THRESH_BINARY)
# detect face
faces = face_cascade.detectMultiScale(gray,1.1, 4) # Face prediction for black and white
faces _ bw = face _ cascade. detectMultiScale(black_and_white, 1.1, 4)
if (len(faces) = = 0 and len(faces_bw) = =0):
cv2. putText(img, " have_mask pjs",org, font, font _ scale, weared _ mask _ font _ color,thickness, cv2.LINE_AA)
else:
for (x, y, w, h) in faces:
roi_gray = gray[y:y + h, x:x + w]
roi_color = img[y:y + h, x:x + w]
mouth _ rects = mouth _ cascade.
detectMultiScale(roi_gray, 1.5, 5)
if (len(mouth_rects) = = 0):
cv2.rectangle(img, (x, y), (x+ w, y + h), (0, 255, 0), 2)
else:
cv2.rectangle(img, (x, y), (x+ w, y + h), (0, 0, 255), 2)
4.4 非疫情情況下的人臉識別系統
關閉口罩識別功能和體溫測量功能,只進行人臉識別功能。
5 設備功能及實現
在非疫情狀態下,當人員靠近攝像頭時,會對人臉進行掃描并對比數據庫,對比成功人員方可通過;在疫情狀態下,當人員靠近攝像頭時,若未佩戴口罩,則圖像會將人像顯示紅框以此來警告,當戴上口罩時,攝像頭顯示綠框并測量體溫,體溫正常人員可通過,體溫異常會及時通知管理人員并上傳數據[7?8] 。
6 結束語
在門禁系統的基礎上,增加防控模式。當通行人員進行人臉識別時,判斷其是否佩戴口罩,同時對其溫度進行測量,整個識別測量過程是非接觸式。對體溫超出一定閾值的人員,終端會發出異常預警,并對其體溫進行展示。本文產品設計遵循經濟實用、安全穩定的設計思想,設計采用技術成熟、性能卓越、簡約時尚的門禁設備及體溫測量,既能滿足當前管理需要,又能適應未來發展。
參考文獻:
[1] 譚儉輝.基于K210人臉身份識別與測溫系統設計[D].廣東:廣東工業大學,2021.
[2] 劉鵬鋒.嵌入式健康信息處理系統的研究與設計[D].武漢:武漢紡織大學,2018.
[3] 李天睿,謝衛平.體溫檢測在人臉識別門禁終端的應用[J].電腦與電信,2021(7):68?70.
[4] 侯國棟,常迎梅.具有紅外測溫功能的人臉識別門禁系統設計[J].科技信息,2010(20):519?520.
[5] 任啟宏,侯國棟,常迎梅.具有紅外測溫功能的非接觸式智能門禁系統[J].常熟理工學院學報,2010,24(2):83?86.
[6] 張宣妮,馬秀霞,魯方瑩,等.智慧小區的人臉識別門禁系統[J].信息系統工程,2021(4):95?96.
[7] RATHKANTHIWAR S, CHAUDHARY T, GAJBHE A, etal. Access Control system with contactless temperaturedetection[J]. International Research Journal of Engineeringand Technology,2021,8(5):3446?3449.
[8] COSTANZO S, FLORES A M. IoT Non?contact BodyTemperature Measurement System Implementing AccessControl for COVID?19 [ J ]. Trends and Applications inInformation Systems and Technologie,2021,13 (20): 255?264.
作者簡介:
彭聚森(2000—),本科,研究方向:通信工程嵌入式。
黃艷麗(1984—),碩士,講師,研究方向:計算機通信、電子技術、模塊識別。
趙若冰(2001—),本科,研究方向:單片機。
周瀟琦(2001—),本科,研究方向:計算機通信。