首頁  >  文章  >  後端開發  >  假期來啦!技術人如何用 Python 實現景區安防系統

假期來啦!技術人如何用 Python 實現景區安防系統

WBOY
WBOY轉載
2023-04-11 14:13:031524瀏覽

本設計中,利用YOLO目標偵測演算法、Openpose姿態辨識演算法、deepsort追蹤演算法、MSCNN人群密度估計演算法實現了火災監測、吸菸監測、行為安全監測、人群密度監測、口罩率監測、人員定位監測六大功能。系統運用智慧視覺互動技術,使用者可透過手勢作業系統,使用者操作方便簡潔。在多角度多方位輔助景區安防管理,消減了景區存在的隱形安全隱患,推動景區智慧化建設。本套系統各類功能之間實現了資料的即時傳輸與回饋,保證了資訊的有效性,可以運行在手機端、電腦端和物聯網平台多個平台,同時也真正意義上實現了「多平台應用」。

假期來啦!技術人如何用 Python 實現景區安防系統

結合多種演算法設計的多功能的智慧安防系統,主要應用於景區中火災預防與監測、疫情防控、遊客安全定位等,對景點安全防護與景區智慧化建設具有重要的應用價值。 假期來啦!技術人如何用 Python 實現景區安防系統

基本介紹

該系統以電腦多媒體技術、智慧型影像分析技術、資料探勘技術等為基礎,建置旅遊景區綜合安防管理系統。針對景區公共活動區域的人身安全,森林防火管理,疫情防控管理等需求,要求建置全方位、全天候、高清化、智慧化的視訊監控系統,以滿足現代旅遊景區安全管理的需求,實現大場景全景監控,針對景區火災、遊客危險行為等突發狀況進行偵測。實現對人員即時定位、軌跡查詢,當發生緊急狀況時聯動地圖進行閃爍警示,並便於緊急指揮。同時滿足人員管理與客流分析系統,需要對出入口客流量進行統計和分析,當景區超過一定的客流容量之後可及時預警停止遊客進入並進行適當的遊客分流處置。結合實際需求及智慧景區的系統架構規劃,旅遊景區綜合安防系統由智慧監控系統、智慧視覺互動、多角度多方位、多平台應用四個模組構成,整合火災監測、吸菸監測、行為安全監測、人群密度監測、口罩率監測、人員定位監測異構安防子系統。系統整體設計架構如下圖:

假期來啦!技術人如何用 Python 實現景區安防系統


基本功能展示

#1、系統概述

假期來啦!技術人如何用 Python 實現景區安防系統

假期來啦!技術人如何用 Python 實現景區安防系統

本智慧監控系統開發平台為Pycharm,使用python語言,共分為六大系統。

2、火災監測系統

本模組透過即時的視訊監控,分析視訊是否有火災產生。如圖所示,如果景區發生火災,系統會及時的發出預警訊息,回饋給調度室,使得火災得到有效控制,極大的提高應對火災的效率。

假期來啦!技術人如何用 Python 實現景區安防系統

3、吸菸監控系統

為了防止景點發生火災,景點多數區域為禁煙區。本模組透過即時的視訊監控,分析視訊是否有吸菸行為。如圖所示,如果有遊客存在吸煙行為,系統會及時的發出預警訊息,回饋給調度室,第一時間發現遊客吸煙的安全隱患,預防火災發生,確保景區安全。

假期來啦!技術人如何用 Python 實現景區安防系統

4、行為安全監控系統

在景點旅遊過程中,遊客人身安全須受到保障。本模組透過即時的視訊監控,分析影片中人的軀體動作,如果發生異常行為如圖中「摔倒」等危險行為可以及時的發出預警訊息。能夠大幅縮短救援時間,減少突發事件造成的損失,並保護遊客的生命財產安全。 假期來啦!技術人如何用 Python 實現景區安防系統

5、人群密度監測系統

受新冠疫情的影響,景區需要合理控制景區內的人口密度。透過本模組可實現對景區遊客人口密度的動態監控,透過智慧分析,將人群密度即時的展現在系統頁面上,幫助用戶管理景區,切實保障廣大遊客、員工的身體健康和生命安全,維護景區和社會穩定大局。 假期來啦!技術人如何用 Python 實現景區安防系統

6、口罩率監控系統

為防止新冠病毒的傳播,根據區域相關規定,進入景區前需要確定乘客。本模組透過即時的視訊監控,分析影片中遊客是否佩戴口罩,將標記每個遊客是否佩戴口罩,將結果顯示在系統上,並即時的顯示場景佩戴口罩率。用於景區疫情防疫工作,保護遊客,保護景點。

假期來啦!技術人如何用 Python 實現景區安防系統

7、人員追蹤定位監控

本模組對景區進行即時的視訊監控,分析並識別視訊中遊客,自動產生識別標籤,將遊客標籤在場景中的位置即時記錄下來,並顯示在系統頁面中,並且可以對場景中人數進行監測,動態顯示在系統頁面左側。輔助使用者管理景區。

假期來啦!技術人如何用 Python 實現景區安防系統

8、智慧視覺互動

本系統可取代了傳統滑鼠點擊模組應用的方法,使用者可以不需要使用滑鼠等輸入裝置即可完成與系統之間的資訊互動。使用者透過肢體動作就可以完成模組的選擇工作,系統操作更加簡潔,使用者使用更加方便。 (這裡只設計了火災偵測功能,其他功能可以根據程式碼參考寫入。)

假期來啦!技術人如何用 Python 實現景區安防系統

假期來啦!技術人如何用 Python 實現景區安防系統

涉及演算法

假期來啦!技術人如何用 Python 實現景區安防系統

1、目標偵測演算法

本計畫使用的目標偵測演算法主要為YOLO演算法,分別應用在火災監測、吸菸行為監測、人員定位追蹤以及口罩率監測。 YOLO目標偵測演算法是考慮到雙階段目標偵測演算法的偵測效率比較低,所以有些學者提出了單階段目標偵測。由JosephRedmon等人於2016年提出。

2、目標追蹤演算法

本專案在人員定位追蹤系統中使用到了deepsort目標追蹤演算法。本系統追蹤的流程如下:

(1)使用卷積神經網路對影片中的行人進行偵測和追蹤。

###(2)視訊幀輸入之後首先進入YOLOv3目標檢測的網絡,經過Darknet-53提取特徵;######(3)其次,進行上採樣和特徵融合,再進行回歸分析;######(4)再次,把得出的預測框資訊輸入SORT演算法進行目標特徵建模,配對與追蹤;######(5)最後,輸出結果。下圖為定位追蹤演算法流程圖:###############3、人群密度估計演算法######人群密度計數是指估計影像或影片中人群的數量、密度或分佈,它是智慧視訊監控分析領域的關鍵問題和研究熱點,也是後續行為分析、擁塞分析、異常檢測和事件檢測等高級視訊處理任務的基礎。本計畫透過採用深度學習方法取得人群密度圖已估計人群數量,使用python語言搭建MSCNN網路實現即時生成人群密度圖以達到估計人群數量的目的。 ######4、姿態估計演算法######本計畫在人體行為安全監測系統上使用了Openpose的人體姿態辨識演算法。透過Openpose的姿態辨識技術對不同肢體之間的協調關係建構分類演算法,並透過不同的分類演算法比較,選擇出最優模型搭建多目標的分類方法,其可實現多個目標的姿態顯示、目標偵測和分類的即時顯示。 ######部分介面操作程式碼如下:###
cap = cv2.VideoCapture(0)
cap.set(3, 1280)
cap.set(4, 720)
detector = HandDetector(detectionCon=0.8)
keys = [["火灾检测", "吸烟检测", "行为安全监测", "人群密度监测", "口罩率检测", "行人定位跟踪"]]
finalText = ""
while True:
success, img = cap.read()
img = detector.findHands(img)
lmList, bboxInfo = detector.findPosition(img)
img = drawAll(img, buttonList)
if lmList:
for button in buttonList:
x, y = button.pos
w, h = button.size
if x < lmList[8][0] < x + w and y < lmList[8][1] < y + h:
cv2.rectangle(img, (x - 5, y - 5), (x + w + 5, y + h + 5), (175, 0, 175), cv2.FILLED)
if l < 30:
if press_state:
cv2.rectangle(img, button.pos, (x + w, y + h), (0, 255, 0), cv2.FILLED)
cv2.putText(img, "start", (x + 20, y + 65),cv2.FONT_HERSHEY_PLAIN, 4, (255, 255, 255), 4)
finalText += button.text
sleep(0.15)
press_state=False
state=True
print(button.text)
text=button.text
else:
press_state=True
if state:
if os.path.exists("img.txt"):
try:
img2 = cv2.imread("img.jpg")
img2 = cv2.resize(img2, (img.shape[1], img.shape[0]))
img = cv2.addWeighted(img, alpha, img2, beta, gamma)
except:
pass
if state:
img = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
draw = ImageDraw.Draw(img)
myfont0 = ImageFont.truetype(r'./HGDH_CNKI.TTF', 50)
for button in buttonList:
x, y = button.pos
w, h = button.size
draw.text((500, 180), text, font=myfont0, fill=(0, 0, 0))
img = cv2.cvtColor(np.asarray(img), cv2.COLOR_RGB2BGR)
cv2.imshow("Image", img)
cv2.waitKey(1)

以上是假期來啦!技術人如何用 Python 實現景區安防系統的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:51cto.com。如有侵權,請聯絡admin@php.cn刪除