?

基于視頻監控的教室人數統計系統的應用研究

2022-10-26 07:06鄭策ZHENGCe王建成WANGJiancheng鄭恒哲ZHENGHengzhe陳雪冬CHENXuedong袁翾YUANXuan劉俊強LIUJunqiang
價值工程 2022年29期
關鍵詞:頁面教室監控

鄭策 ZHENG Ce;王建成 WANG Jian-cheng;鄭恒哲 ZHENG Heng-zhe;陳雪冬 CHEN Xue-dong;袁翾 YUAN Xuan;劉俊強 LIU Jun-qiang

(河南科技大學軟件學院,洛陽 471003)

0 引言

近年來,隨著科技和互聯網的不斷發展,很多行業對人流信息的統計有極大的需求,如火車站、公交站、地鐵站、商場出入口等人流量大的場所。通過人數統計系統可以方便、可靠、實時地對各種場所的人流進行統計,而不對公眾造成任何影響。結合圖像分析技術,可以清楚快捷地掌握客流動態,提供數據支持,使決策者及時做出對策。利用圖像處理來完成人數統計系統的主要優點就是圖像信號非常直觀,便于人為地理解。本項目源于大學生的日常學習生活,教室作為其中一個十分特殊的公共場合,它的人數有著很重要的現實意義。

對大學生來說:脫離了高中緊張的學習環境,邁入高校的殿堂,缺少了老師和父母的嚴格要求,許多在校大學生作息時間紊亂,課堂到課情況不理想,出現缺課、曠課情況,嚴重影響到學業成績。讓學生養成一個好的作息習慣,規范學生的學習習慣,是很多高校最想做到的事情之一。

對同學來說:現在,在校大學生可以隨時隨地通過設備進行網絡操作,而目前各大高校圖書館和自習室資源普遍緊張,空閑教室往往成為許多學生自習的主要場所,但是由于不了解教室的資源使用情況,同學們尋找沒有課程且有空位的教室通常需要花費大量時間。因此,建立基于視頻監控的教室人數統計系統對大學生的學習以及學習環境至關重要。

對老師來說:統計出勤情況是記錄學生課程學習過程、提供平時成績評定依據的有效方法。而傳統考察出勤人數的方式大多耗時費力,并且存在替代簽到的情況使得數據不可靠,在浪費寶貴課堂時間的同時,也為老師增添了負擔。

因此,設計一種可方便統計教室內人數并進行顯示的系統,有助于幫助學生快速尋找空閑教室,提高教室的資源利用率,規范學生的按時到課率以及幫助老師統計出勤情況。系統結合所學知識,通過運用目標檢測網絡技術對教室監控視頻畫面處理分析,建立可視化界面,提供教室數據的相關信息。

1 基于視頻監控的教室人數統計系統的定位與優勢

1.1 項目宗旨

基于視頻監控的教室人數統計系統其宗旨是面向高校學生和老師,通過技術改變生活,以教室信息可視化為中心,為學生提供準確的教室信息,實現空閑教室資源的合理利用,節省人力物力,讓同學們能夠享受更加方便、快捷、優質的學習生活,同時可以幫助老師統計出勤情況。

1.2 項目的優勢

①目前大多數高校只有圖書館有預約占位功能,而空閑教室資源普遍沒有被合理利用,且目前來看,在高校中教室人數統計系統的市場為空白,無同類項目。②隨著科學技術的發展,視頻監控設備的成本也越來越低,并且許多高校教室原本就有視頻監控設備,系統實施成本較低且可控。③本項目來源于切身的生活體驗,開發人員也為該項目的使用者,對項目功能的需求分析十分到位,所有功能的實現能夠完全貼近系統的需求。④項目內容完全基于校園的學習生活,操作安全可控、內容健康向上、使用方便快捷。⑤在學習之余做開發設計,既促進了學習,又提高了自己的應用開發能力,且極大地降低了系統開發成本。⑥使用目前流行的技術進行項目的設計與開發,使得我們接觸并且掌握熱門流行技術,拓寬了我們的視野。⑦開發團隊穩定,成員全部為大三學生,每年畢業生離校但新成員同步補充到位,因此項目的運行維護沒有斷點。

1.3 項目的具體功能

①視頻圖像的檢測處理。②教室數據分析和可視化。③用戶能夠對相應數據進行查看。

2 項目的功能模塊設計

在團隊探討交流的基礎上形成了需求說明書,將系統的功能分為了以下幾個模塊:①數據獲取模塊:此模塊主要通過連接視頻監控接口,獲取監控畫面,并進行畫面的實時保存。②數據處理模塊:此模塊主要使用yolov5對獲取的視頻畫面進行處理,并保存處理后的結果將其上傳至云端服務器。③服務器管理模塊:此模塊主要將上傳來的數據進行處理后保存到云端數據庫,以及為前端提供相應的數據訪問接口。④前端顯示模塊:前端顯示模塊主要包含對獲取到的數據進行可視化處理以及項目介紹。數據可視化主要包含檢測處理后的圖像結果展示,人數統計展示,以及每個教室密度對應的顏色指示燈。

3 系統的實現

系統數據均由后臺上傳、云端服務器獲取、云端數據庫存儲,不同的數據訪問接口具有相似的數據返回格式,降低了前后端分離帶來的成本,提高了開發速度。各模塊之間的耦合性較低,便于多人共時協同開發。項目總體實現流程如圖1所示。

圖1 項目總體實現流程

項目的后臺使用Python實現,主要負責視頻流的獲取,目標檢測處理,處理結果上傳,主要包括以下幾個方面:①capFrame()方法實現對視頻流的截圖并保存本地。②run()方法實現對圖片的處理并保存結果。③upload()方法把處理后的結果上傳至服務器。④使用多線程,使得capFrame()方法在運行時,run()方法和upload()方法也同時運行,互不影響。⑤使用方法循環,保證數據的實時性。

項目的服務器端使用JavaSSM框架和maven實現,主要負責后臺上傳數據的存儲,主要包括以下幾個方面:①實體類:ClassRoom.java,包含屬性:id:數據ID,photo:圖片,num:教室人數,class_name:教室名,time:時間,seat:教室座位數量。②控制器類:ClassRoomController.java,包含方法:getClasses():獲取班級列表;uploadFile():上傳數據(圖片、人數、班級名、座位數)。③實體類屬性名與數據庫表中屬性名對應相同。

項目的數據庫用MySQL實現并完成數據庫的設計,實現數據的存儲,主要包括以下幾個方面:①確認數據庫名稱、字符集、排列順序等。②確定數據庫內數據表的名稱,一般情況下數據表的名稱和實體類的名稱一致,確定表內所含字段的名稱、類型、長度、主鍵是否為空。③表class:如表1所示。④存儲過程函數updateClass():根據服務器端傳入的教室號數據進行判斷是否執行插入或更新操作。

表1 數據庫class表

項目的前端用Vue框架和jQuery框架實現,實現數據的顯示,主要包括以下幾個方面:①browserRedirect()方法根據設備類型跳轉至不同的頁面(如手機端、電腦端)。②getClass()方法調用服務器接口獲取教室信息。③times()方法定時任務,每隔5秒獲取一次班級信息,實現數據的刷新。④使用Vue進行頁面渲染,v-for、v-if等方法來根據獲取到數據顯示不同內容。

系統功能不做一一詳述,僅以目標檢測處理、檢測結果上傳、主界面為例做簡要描述。

3.1 目標檢測處理

此模塊運用目前流行的強悍的目標檢測技術yolov5,由于教室內大多同學都是坐在座位,所以檢測人物模型時會有遮擋,我們改變思路,將頭部識別作為人數統計依據。通過訓練數據集得到的權重文件來進行圖片的頭部檢測處理,檢測后圖片處理結果如圖2所示。

圖2 目標檢測后圖像

3.2 檢測結果上傳

此模塊將目標檢測處理后生成的圖像和文本文件上傳至云端服務器,之后由服務器進行相應的數據操作,關鍵代碼如下:

def upload():

#圖片所在目錄

img_dir="./runs/detect/exp_room/"

#txt文檔所在目錄

txt_dir="./runs/detect/exp_room/labels/"

#遍歷圖片目錄,將目錄中的內容放入files

files=os.listdir(img_dir)

#遍歷files

for fi in files:

#如果該項為文件(非目錄)

if os.path.isfile(img_dir+fi):

print("上傳文件:"+fi)

#打開與圖片名對應的txt文件

num_file=open(txt_dir+fi.split(".")[0]+".txt",encoding='utf-8')

#讀取txt文件中的第一行(人數)

num=num_file.readline().split()[0]

class_name=fi.split(".")[0]

seat=class_name.split("$")[1]

class_name=class_name.split("$")[0]

#請求接口地址

url='http://srtp.achengovo.com/uploadFile'

#讀取圖片文件

file={'photo':open(img_dir+fi,'rb')}

#其余參數

data={'num':num,'class_name':class_name,"seat":seat}

print(data)

#向服務器發送post請求

response=requests.post(url,files=file,data=data)

#輸出請求結果

res=response.text

print(res)

3.3 主界面的實現

用戶登錄網址(http://srtp.achengovo.com/)后,會根據用戶設備的不同進行適配顯示,分為PC端和手機端,主頁主要包括首頁和關于項目,用戶可以根據頁面上部的導航直接進行頁面跳轉,首頁通過對云端服務器發送請求直接展示各教室的檢測數據,包括教室號、目標檢測處理后的圖片、教室人數、檢測時間和擁擠程度判斷,用戶可以直接查看信息并選擇是否要去往該教室。

首頁向服務器端發送請求獲得數據的關鍵代碼如下:

def getClasses():

#請求接口

url="http://srtp.achengovo.com/getClasses"

#發送請求

result=requests.get(url)

#將請求結果轉為json

result=result.json()

#遍歷輸出

for res in result:

print(res)

PC端主頁面展示如圖3所示。

圖3 PC端主頁面

手機端主頁面展示如圖4所示。

圖4 手機端主頁面

4 項目實施總結

基于視頻監控的教室人數統計系統已經完成并定義為V1.0版。后期的開發還會繼續完善,擬在已經設計的功能模塊上加入教室的課表以及教室占用的時間安排信息,并且融入可視化數據分析,實現更多方便快捷的功能。未來還會與學校教務處、網絡中心、圖書館以及后勤集團聯系,在獲得批準后調用教室監控的視頻圖像接口,達到數據的精準、完整。

項目已經在河南科技大學軟件學院學生會、青協進行推廣,團隊成員及時了解到用戶使用過程中的反饋意見,并一一記錄,通過團隊的討論給出解決方案,同時在系統的運行過程中不斷添加功能并解決相關異常,目前程序運行穩定,反饋良好,項目開發過程形成的1.0版本取得了滿意的效果。后期還要在功能模塊上細化功能的實現,同時優化相關代碼。

猜你喜歡
頁面教室監控
刷新生活的頁面
“313”教室
The Great Barrier Reef shows coral comeback
這里的教室靜悄悄
你被監控了嗎?
Zabbix在ATS系統集中監控中的應用
長時間待在教室更容易近視
PDCA循環法在多重耐藥菌感染監控中的應用
網站結構在SEO中的研究與應用
淺析ASP.NET頁面導航技術
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合