假期来啦!技术人如何用 Python 实现景区安防系统
本设计中,利用YOLO目标检测算法、Openpose姿态识别算法、deepsort跟踪算法、MSCNN人群密度估计算法实现了火灾监测、吸烟监测、行为安全监测、人群密度监测、口罩率监测、人员定位监测六大功能。系统运用智能视觉交互技术,用户可以通过手势操作系统,用户操作方便简洁。在多角度多方位辅助景区安防管理,消减了景区存在的隐形安全隐患,推动景区智慧化建设。本套系统各类功能之间实现了数据的实时传输与反馈,保证了信息的有效性,可以运行在手机端、电脑端和物联网平台多个平台,同时也真正意义上实现了“多平台应用”。
结合多种算法设计的多功能的智能安防系统,主要应用于景区中火灾预防与监测、疫情防控、游客安全定位等,对景区安全防护与景区智能化建设具有重要的应用价值。
基本介绍
该系统以计算机多媒体技术、智能图像分析技术、数据挖掘技术等为基础,建设旅游景区综合安防管理系统。针对景区公共活动区域的人身安全,森林防火管理,疫情防控管理等需求,要求建设全方位、全天候、高清化、智能化的视频监控系统,以满足现代旅游景区安全管理的需求,实现大场景全景监控,对景区火灾、游客危险行为等突发情况进行检测。实现对人员实时定位、轨迹查询,当发生紧急情况时联动地图进行闪烁警示,并便于应急指挥。同时满足人员管理与客流分析系统,需要对出入口客流量进行统计和分析,当景区超过一定的客流容量之后可及时预警停止游客进入并进行适当的游客分流处置。结合实际需求及智慧景区的系统架构规划,旅游景区综合安防系统由智能监控系统、智能视觉交互、多角度多方位、多平台应用四个模块构成,整合火灾监测、吸烟监测、行为安全监测、人群密度监测、口罩率监测、人员定位监测异构安防子系统。系统总体设计架构如下图:
基本功能展示
1、系统概述
本智能监控系统开发平台为Pycharm,使用python语言,共分为六大系统。
2、火灾监测系统
本模块通过实时的视频监控,分析视频是否有火灾产生。如图中所示,如果景区发生火灾,系统会及时的发出预警信息,反馈给调度室,使得火灾得到有效控制,极大的提高应对火灾的效率。
3、吸烟监测系统
为了防止景区发生火灾,景区多数区域为禁烟区。本模块通过实时的视频监控,分析视频是否存在吸烟行为。如图中所示,如果有游客存在吸烟行为,系统会及时的发出预警信息,反馈给调度室,第一时间发现游客吸烟的安全隐患,预防火灾发生,确保景区安全。
4、行为安全监测系统
景区旅游过程中,游客人身安全须受到保障。本模块通过实时的视频监控,分析视频中人的躯体动作,如果发生异常行为如图中“摔倒”等危险行为可以及时的发出预警信息。能够大大缩短救援时间,减少突发事件造成的损失,保护游客的生命财产安全。
5、人群密度监测系统
受新冠疫情的影响,景区需要合理控制景区内的人口密度。通过本模块可以实现对景区游客人口密度的动态监控,通过智能分析,将人群密度实时的展现在系统页面上,帮助用户管理景区,切实保障广大游客、员工的身体健康和生命安全,维护景区和社会稳定大局。
6、口罩率监测系统
为防止新冠病毒的传播,根据景区相关规定,进入景区之前需要确定乘客。本模块通过实时的视频监控,分析视频中游客是否佩戴口罩,将标记每个游客是否佩戴口罩,将结果显示在系统上,并实时的显示场景佩戴口罩率。用于景区疫情防疫工作,保护游客,保护景区。
7、人员跟踪定位监测
本模块对景区进行实时的视频监控,分析并识别视频中游客,自动生成识别标签,将游客标签在场景中的位置实时记录下来,并显示在系统页面中,并且可以对场景中人数进行监测,动态显示在系统页面左侧。辅助用户管理景区。
8、智能视觉交互
本系统可代替了传统鼠标点击模块应用的方法,用户可以不需要使用鼠标等输入设备即可完成与系统之间的信息交互。用户通过肢体动作就可以完成模块的选择工作,系统操作更加简洁,用户使用更加方便。(这里只设计了火灾检测功能,其他功能可以根据代码参考写入。)
涉及算法
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中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

C语言中没有内置求和函数,需自行编写。可通过遍历数组并累加元素实现求和:循环版本:使用for循环和数组长度计算求和。指针版本:使用指针指向数组元素,通过自增指针遍历高效求和。动态分配数组版本:动态分配数组并自行管理内存,确保释放已分配内存以防止内存泄漏。

Python和JavaScript开发者的薪资没有绝对的高低,具体取决于技能和行业需求。1.Python在数据科学和机器学习领域可能薪资更高。2.JavaScript在前端和全栈开发中需求大,薪资也可观。3.影响因素包括经验、地理位置、公司规模和特定技能。

distinct 和 distinguish 虽都与区分有关,但用法不同:distinct(形容词)描述事物本身的独特性,用于强调事物之间的差异;distinguish(动词)表示区分行为或能力,用于描述辨别过程。在编程中,distinct 常用于表示集合中元素的唯一性,如去重操作;distinguish 则体现在算法或函数的设计中,如区分奇数和偶数。优化时,distinct 操作应选择合适的算法和数据结构,而 distinguish 操作应优化区分逻辑效率,并注意编写清晰可读的代码。

H5页面需要持续维护,这是因为代码漏洞、浏览器兼容性、性能优化、安全更新和用户体验提升等因素。有效维护的方法包括建立完善的测试体系、使用版本控制工具、定期监控页面性能、收集用户反馈和制定维护计划。

!x 的理解!x 是 C 语言中的逻辑非运算符,对 x 的值进行布尔取反,即真变假,假变真。但要注意,C 语言中真假由数值而非布尔类型表示,非零视为真,只有 0 才视为假。因此,!x 对负数的处理与正数相同,都视为真。

C语言中没有内置的sum函数用于求和,但可以通过以下方法实现:使用循环逐个累加元素;使用指针逐个访问并累加元素;对于大数据量,考虑并行计算。

如何在爬虫时获取58同城工作页面的动态数据?在使用爬虫工具爬取58同城的某个工作页面时,可能会遇到这样�...

PS“正在载入”问题是由资源访问或处理问题引起的:硬盘读取速度慢或有坏道:使用CrystalDiskInfo检查硬盘健康状况并更换有问题的硬盘。内存不足:升级内存以满足PS对高分辨率图片和复杂图层处理的需求。显卡驱动程序过时或损坏:更新驱动程序以优化PS和显卡之间的通信。文件路径过长或文件名有特殊字符:使用简短的路径和避免使用特殊字符。PS自身问题:重新安装或修复PS安装程序。
