1.项目背景

智能视频监控(Intelligent Video Surveillance , IVS)[1.2·3.4是计算机视觉技术5l在安防领域的应用,实现了由“被动监控”到“主动监控”的转变。计算机视觉技术是人工智能系统的一个分支方向,利用摄像机和计算机代替人眼,实现视觉图像信息处理,从而达到识别和理解视频图像内容的目的。智能视频监控借助借助于计算机强大的数据处理功能,依靠计算机视觉等技术,对图像或者监控视频中的内容提取关键信息并快速分析,根据分析的结果对视频监控系统进行反馈处理,从而达到智能识别、理解和处理的效果。总之,智能视频监控以数字化、网络化、智能化为发展方向,实现及时报警,能够大大减轻监控中人工劳动强度,同时可以降低漏报率和误报率,从而使视频监控系统具有较高层次的智能化水平。

2.图片演示

3.视频演示

Python基于OpenCV的异常行为检测系统[源码&部署教程]

4.人体行为检测

在医院、公园、广场等儿童和老年人经常出现的监控场景中,人体跌倒检测具有重要的应用价值,可有效的保障监护人群的人身安全,并能够及时处理一些突发状况。本文的行人跌倒检测主要是针对监控人群由于突发情况跌倒后长时间无法站立的情况进行检测并报警处理,倘若行人跌倒后在较短的时间内自行站立,则将不进行报警处理。下图给出了人体正常行走和跌倒时的目标轮廓。

由可以看出,当监控人体发生跌倒时,最直观的特征是人体的轮廓发生改变并且重心下降。根据前面讲述的常用几何特征的方法,如果只是简单的比较运动目标的长和高,则会因为运动目标远离或靠近摄像头时长和高都会改变,而它们的比值则不会存在这种情况,参考该博客方法通过运动人体目标质心变化率和目标外界矩形框长高比的变化进行跌倒行为检测。具体判断标准如下:
1)运动人体外接矩形长高比P = Height / Width 。当人体跌倒时,提取目标的外接矩形也随之发生改变,最显著的表现是长高比的变化。

其中,T是阈值,根据实际情况,一般人体正常行走时,长高比P小于1,而跌倒时长高比大于1,所以T一般取值为1。
(2)运动目标质心变化。当人体跌倒时,重心会下移,在图像中以质心形式体现。由于孤立的对待某一个点值不能全面体现人体运动状态,本文采用质心差值分布β值表示运动状态。

其中,y,表示运动人体第n个质心纵坐标,(>y)/n表示前n个质心纵坐标的平均值,质心的具体计算过程见式(3-2)。当人体正常行走时,质心差值分布β值会处于较小的范围当跌倒时,由于瞬间质心发生突变,β值将会变大。

如果运动人体满足M和M,均为1的条件,即目标外接矩形框的长高比和质心差值分布β值均小于阈值,则认为发生了跌倒行为。此时,记录产生变化时时的时间t,倘若在At时间内,矩形框的长高比和质心差值分布β值始终小于阈值时,则认为人体无法站立,系统将在t+△t时刻进行报警提示处理。检测算法主要步骤:
⑴利用背景减法提取前景目标,并对其进行二值化和形态学处理。
(2)提取并记录前景目标的运动信息,包括目标长高比和质心坐标。
(3)判断前景目标的长高比是否满足M为1,如果满足,则可继续进行步骤(4)判断,否则,返回步骤(1)。
(4)对前景目标计算质心差值分布β值,如果满足条件M,为1,则判断人体跌倒,否则返回步骤(1)。
(5)记录人体跌倒时间,如果长时间满足条件M为 1,则进行报警提示;如果在较短的时间内人体自行站立,则不进行处理。

5.人体徘徊检测

在实际监控场景中,通常人体徘徊行为属于异常行为,因为现在的监控场合对安全需求较高,例如国家机关、学校、银行和停车场等场合,需要能够对破坏、偷窃等违法行为进行预警处理,而这些违法行为通常与前期徘徊行为有关,因为徘徊行为体现了一个人彷徨犹豫不决、焦灼心理。所以,人体徘徊检测是智能视频监控系统中的关注热点。
参考该博客的方法,人体徘徊的特点可总结为以下几条:
(1)人体运动轨迹在垂直和水平方向上发生多次方向改变。
(2)当前运动人体位置与进入场景时的起始位置的距离不会一直增大或减小,始终存在由
大变小和由小变大的循环变化过程。
(3)运动人体处于场景的时间较长。

6.算法流程图

7.代码实现

# 执行以下命令:
# python activity_recognition_demo.py --model resnet-34_kinetics.onnx --classes action_recognition_kinetics.txt --input videos/activities.mp4from collections import deque
import numpy as np
import argparse
import imutils
import cv2# 构造参数
ap = argparse.ArgumentParser()
ap.add_argument("-m","--model",required=True,help="path to trained human activity recognition model")
ap.add_argument("-c", "--classes", required=True, help="path to class labels file")
ap.add_argument("-i", "--input", type=str, default="", help="optional path to video file")
args = vars(ap.parse_args())# 类别,样本持续时间(帧数),样本大小(空间尺寸)
CLASSES = open(args["classes"]).read().strip().split("\n")
SAMPLE_DURATION = 16
SAMPLE_SIZE = 112
print("处理中...")
# 创建帧队列
frames = deque(maxlen=SAMPLE_DURATION)# 读取模型
net = cv2.dnn.readNet(args["model"])
# 待检测视频
vs = cv2.VideoCapture(args["input"] if args["input"] else 0)writer = None
# 循环处理视频流
while True:# 读取每帧(grabbed, frame) = vs.read()# 判断视频是否结束if not grabbed:print("无视频读取...")break# 调整大小,放入队列中frame = imutils.resize(frame, width=640)frames.append(frame)# 判断是否填充到最大帧数if len(frames) < SAMPLE_DURATION:continue# 队列填充满后继续处理blob = cv2.dnn.blobFromImages(frames,1.0, (SAMPLE_SIZE, SAMPLE_SIZE), (114.7748, 107.7354, 99.4750),swapRB=True,crop=True)blob = np.transpose(blob, (1, 0, 2, 3))blob = np.expand_dims(blob, axis=0)# 识别预测net.setInput(blob)outputs = net.forward()label = CLASSES[np.argmax(outputs)]# 绘制框cv2.rectangle(frame, (0, 0), (300, 40), (255, 0, 0), -1)cv2.putText(frame, label, (10, 25), cv2.FONT_HERSHEY_SIMPLEX, 0.8,(0, 0, 255), 2)# cv2.imshow("Activity Recognition", frame)# 检测是否保存if writer is None:# 初始化视频写入器# fourcc = cv2.VideoWriter_fourcc(*"MJPG")fourcc = cv2.VideoWriter_fourcc(*"mp4v")writer = cv2.VideoWriter("videos\\test.mp4",fourcc, 30, (frame.shape[1], frame.shape[0]), True)writer.write(frame)# 按 q 键退出
# key = cv2.waitKey(1) & 0xFF
# if key == ord("q"):
#     break
print("结束...")
writer.release()
vs.release()

8.系统整合

下图完整源码&环境部署视频教程&自定义UI界面

参考博客《Python基于OpenCV的异常行为检测系统[源码&部署教程]》

9.参考文献

  • [1]基于OpenCV的运动目标光流算法仿真[J]. 聂伟乐,瞿建荣. 应用光学. 2008(06)
  • [2]基于改进的混合高斯模型的运动目标检测方法[J]. 姚会,苏松志,王丽,李绍滋. 厦门大学学报(自然科学版). 2008(04)
  • [3]基于背景减法和时空熵的运动目标检测新方法[J]. 常晓锋,冯晓毅. 计算机仿真. 2008(03)
  • [4]滞留与偷窃物体实时检测与分类算法[J]. 王伟嘉,刘辉,沙莉,刘鑫,姜华. 计算机应用. 2007(10)
  • [5]智能视觉监控技术研究进展[J]. 王素玉,沈兰荪. 中国图象图形学报. 2007(09)
  • [6]基于视频的入侵检测系统[J]. 吴金勇,虞致国,马国强,徐健健. 电子测量技术. 2006(01)
  • [7]开放源代码的计算机视觉类库OpenCv的应用[J]. 黎松,平西建,丁益洪. 计算机应用与软件. 2005(08)
  • [8]基于直方图的Snake视频对象跟踪算法[J]. 郭礼华,袁晓彤,李建华. 中国图象图形学报. 2005(02)
  • [9]视频监视中运动目标检测与识别方法[J]. 李庆忠,陈显华,王立红. 计算机工程. 2004(16)
  • [10]IPL和OpenCV在VC++环境下的应用[J]. 吕学刚,于明,刘翠响. 微型电脑应用. 2003(01)

Python基于OpenCV的异常行为检测系统[源码&部署教程]相关推荐

  1. Python基于OpenCV的人脸表情识别系统[源码&部署教程]

    1.项目背景 人脸表情识别是模式识别中一个非常重要却十分复杂的课题.首先对计算机人脸表情识别技术的研究背景及发展历程作了简单回顾.然后对近期人脸表情识别的方法进行了分类综述.通过对各种识别方法的分析与 ...

  2. 【YOLOv7】Python基于YOLOv7的人员跌倒检测系统(源码&部署教程&数据集)

    1.项目背景: 世界老龄化趋势日益严重,现代化的生活习惯又使得大多数老人独居,统计数据表明,跌倒是老年人的主要致伤原因.利用先进的计算机技术.传感器技术和图像信息处理技术实现人体跌倒自动检测,不仅可以 ...

  3. Python基于OpenCV监控老鼠蟑螂检测系统[完整源码&部署教程]

    1.视频演示: [项目分享]Python基于OpenCV监控老鼠蟑螂检测系统[完整源码&部署教程]_哔哩哔哩_bilibili 2.图片演示: 3.明厨亮灶: 餐饮企业的厨房卫生状况一直饱受消 ...

  4. Python基于YOLOv5的交通标志识别系统[源码]

    1.图片演示: 2.视频演示: [项目分享]Python基于YOLOv5的交通标志识别系统[源码&技术文档&部署视频&数据集]_哔哩哔哩_bilibili 3.标注好的数据集: ...

  5. [YOLOv7]基于YOLOv7的食物卡路里检测系统(源码&部署教程&数据集)

    1.识别效果展示 2.视频演示 [YOLOv7]基于YOLOv7的食物卡路里检测系统(源码&部署教程&数据集)_哔哩哔哩_bilibili 3.YOLOv7算法简介 YOLOv7 在 ...

  6. Python基于YOLOv7的火灾检测系统(源码&教程)

    1.项目背景 为解决传统传感器在检测火灾的过程中受到环境.安装距离等因素影响导致适应性差的缺点,本文基于视觉传 感器,通过视觉目标检测技术对火灾进行检测,从而实现火灾的预警. 2.识别效果展示 3.视 ...

  7. 基于OpenCV的图像形状检测(含源码)

    导读 本文给大家分享一个用OpenCV传统方法实现形状检测的小案例. 背景介绍 实例来源:https://github.com/akshaybhatia10/ComputerVision-Projec ...

  8. Python基于YOLOv5的交通标志识别系统[源码&技术文档&部署视频&数据集]

    1.图片演示: 2.视频演示: 3.标注好的数据集: 4.YOLO网络的构建: 网络结构是首先用Focus将计算图长宽变为原先1/4, channel 数量乘4.再用bottlenectCSP 提取特 ...

  9. 基于OpenCV监控老鼠蟑螂检测系统[完整源码&部署教程]

    1.视频演示: [项目分享]Python基于OpenCV监控老鼠蟑螂检测系统[完整源码&部署教程]_哔哩哔哩_bilibili 2.图片演示: 3.算法原理: 该博客提出的移动侦测即是根据视频 ...

最新文章

  1. 77所教育部直属高校公布2020年预算,清华超300亿!
  2. python结果输出到文件-python print输出到文件
  3. 老BOJ 07 Fence Repair
  4. 程序员建议(忘记从哪里转的了,反正是csdn上的一个兄弟)
  5. 我的Thinkpad T410最近老是出Fan error
  6. ubuntu上的wordpress安装
  7. 简单谈谈5G/C-V2X技术与自动驾驶的关系
  8. 初学者是学习 C 语言还是 C++ 好?各有何利弊?
  9. ab plc软件_【万泉河】PLC垃圾程序赏析2:AB RSLOGIX 5000
  10. 计算机错误英语,计算机启动提示:引导时解释英语错误消息的含义
  11. 八皇后时间复杂度_九章算法 | N皇后问题
  12. linux命令、vi编辑器常用命令
  13. 杂谈-苹果账号调查事件始末,Apple审核流程或有变
  14. Java基础知识➣发送Emai和访问MySQL数据库(七)
  15. RING BUFFER的常规用法
  16. Learning Spatio-Temporal Transformer for Visual Tracking——精读笔记
  17. 什么是编码?什么是解码?
  18. 微星极光授权使用步骤
  19. 乌云安全所有资料(百度云打包)pdf
  20. 计算机桌面工作提醒,如何在电脑桌面显示工作提醒?电脑上有什么好用的桌面工作提醒便签吗...

热门文章

  1. 使用远程工具时浏览器一片空白
  2. Latex设置页面横置
  3. ios 震动api_震动API
  4. 语音编程之Speech SDK概述
  5. 使用油猴子对 Eureka 网址进行自定义修改
  6. 火墙--iptables
  7. 如何显示计算机中本地用户和组,Win10本地用户和组在哪里_Win10怎么打开本地用户和组?-192路由网...
  8. 怎么找到ADC0804的芯片封装
  9. C语言 lamda使用
  10. 2022年 安全智能分析技术白皮书 模型开发