最近有空研究了一下基于Opencv的视频人数统计。总结了一下,视频人数统计系统的工作流程主要包括以下几个部分:

1.视频捕获

从视频源(摄像头或视频文件)获取到视频图像数据。

2.目标提取(背景建模、前景分析)

由视频图像分割出视频图像中的运动区域。

常见的方法:高斯背景建模,帧差法,三帧差法。

3.目标识别(模式识别、特征点分析)

根据目标特征分析得到具体目标。比如人脸识别、头肩部识别等。

OpenCV里可以使用Haar特征 、级联分类器来进行目标检测。但分类器的训练需要从事先准备好的成百或上千张正面或反面样本中训练得到,整个过程会比较复杂,这种方法应该会达到很好的检测效果 。OpenCV也自带了一些已经训练好的包括人眼、人脸和人体的分类器(位于OpenCV安装目录\data\haarcascades目录下,分类器是XML类型的文件),可以直接使用这些分类器来进行图像检测,但由于使用的环境不同,这些分类器不一定是最优的,检测效果不一定会很好,这些现成的分类器只是提供了一个基本的参考,在实际使用时,还需要根据实际环境对分类器中的配置参数做一些调整和优化才能使检测结果比较准确。当然,此种方式的开销也会大,而且只有OpenCV2.0版本以上才支持,因此在嵌入式领域,这并不是一个很好的方式。

4.目标跟踪

检测目标在每一帧的空间位置。从而得到目标的运动估计。

基本方法:
       直方图特征匹配:根据目标区域的颜色直方图特征进行目标匹配。分别对运动目标的前后两帧计算颜色分布的直方图,如果两者的颜色直方图最接近,则认为目标匹配成功。
       运动目标连续性匹配:利用相邻两帧图像中待匹配的目标在时间和空间上的相关性。由于视频中相邻两帧间时间间隔很短,可以认为在相邻两帧间目标是做匀速运动。这样,可以根据当前目标的运动速度和方向来预计目标在下一帧的位置,如果下一帧的所有运动目标中存在与待匹配目标的预期位置最接近的,则认为目标匹配成功。

OpenCV里可以使用CamShift算法直接对彩色图像进行跟踪。它的基本原理也是通过直方图特征来进行目标匹配。测试了一下,在对我使用的视频进行跟踪时,效果不是很理想,会出现误跟踪的情况,没有达到预期的效果,而且CamShift算法是直接对彩色图像进行跟踪,开销会比较大,这里并不是说CamShift算法不好,其实视频图像处理本身就跟具体的外界环境有关,每一种图像算法一般都是针对特定的环境,并不是通用的,在某些环境下,比如目标物体的颜色跟环境差异比较明显,CamShift算法可能会达到比较好的效果。

5.轨迹分析

根据目标的运动轨迹计算出目标的运动方向和位移等,判断目标是进入还是离开指定区域,从而对目标进行数目统计。

编程实现

以下是采用运动目标连续性匹配算法实现的视频人数统计系统截图。开发环境是Opencv2.3.0+VS2005。

具体算法参考了论文《一种基于人头特征的人数统计方法研究》 作者:顾德军 伍铁军,论文介绍的很详细。这里就不再鳌述了。测试视频文件从优酷(地址:http://v.youku.com/v_show/id_XMTY2MDY1OTk2.html)上找到,从视频文件可以看出拍摄视频摄像头的是斜向下安装,此种方式得到的二值图像的人头特征不是很明显,因而不太好利用人头特征来进行目标识别。这里只是简单利用了运动目标面积大小来做了匹配,当多人之间互相有重叠或包含其它物体时,就不能很好的区分开来。

一种改进的方法是摄像头采用头顶式的安装,这样经过二值化处理的人头特征应该会比较明显一些,而且人头之间不会有重叠的现象,准确率会更大一些。但由于没有该环境下的视频数据,因次没办法来验证识别率到底如何。如果有对这方面感兴趣的朋友,可以一起来交流学习。

参考文献:

1.《一种基于人头特征的人数统计方法研究》 作者:顾德军 伍铁军

2.《基于视频的客流技术系统的研究》 作者:田京雷 毕胜

3.《智能视频中基于机器学习的自动人数统计》 作者:贾彗星 章毓晋
--------------------- 
作者:firehood 
来源:CSDN 
原文:https://blog.csdn.net/firehood_/article/details/8279014 
版权声明:本文为博主原创文章,转载请附上博文链接!

OpenCV 视频人数统计研究相关推荐

  1. Opencv实战(一) 视频人数统计(C++ Opencv)前后背景分离方法

    在博客<视频人数统计(opencv)>中,作者使用的Absdiff帧差法降低背景影响,进而通过二值化,边缘化,滤波器,形态学变化,查找轮廓,轮廓面积控制,绘制轮廓等一系列方法完成了对样例图 ...

  2. 实现视频人数统计python-flask-yolov5

    需求介绍 小编qq群:193369905 相关需求联系群主 客户端请求输入一段视频或者一个视频流,输出人数或其他目标数量,上报给上层服务器端,即提供一个http API调用算法统计出人数,最终http ...

  3. opencv实现视频里人数统计

    小编有个群193369905,相关毕设也可找群主,里面分享的均是机器视觉的资料.基于图像的人数统计属于模式识别问题,可应用于安防领域. 先放个最近的人数教室人头统计图 前两张效果图为caffe训练完成 ...

  4. OpenCV视频识别检测人数跟踪统计

    Python+OpenCV视频识别检测人数跟踪统计 如需远程调试,可加QQ905733049由专业技术人员远程协助! 运行代码如下: import numpy as np import cv2 imp ...

  5. 人头识别与计数_基于人头检测的人数统计算法研究

    摘要: 在统计人数时候都是根据所检测到的目标进行计数,从最开始传统的红外线检测的人数统计系统到现在的智能视频处理人数统计系统.在一些人群众多的场所和人员并排走时会有很严重的遮挡现象,所以红外线检测就不 ...

  6. Python OpenCV识别行人入口进出人数统计

     程序示例精选 Python OpenCV识别行人入口进出人数统计 如需安装运行环境或远程调试,见文章底部微信名片,由专业技术人员远程协助! 前言 这篇博客针对<Python OpenCV识别行 ...

  7. OpenCV图像人脸识别人数统计

    Python+OpenCV图像人脸识别人数统计 如需远程调试,可加QQ905733049由专业技术人员远程协助! 运行代码如下: #!/usr/bin/python # -*- coding: utf ...

  8. MATLAB教室人数统计开源代码(包含 GUI 注释 课题分析)

    MATLAB教室人数统计(免费开源代码) 本人参考了很多的资料最后总结整出来的,如果能够该博客对你的学习有所帮助的话,希望大家可以帮我点个赞,本人是抱着学习的态度进行分享,大家如果能在我的基础上进行二 ...

  9. python人脸头发身体部位识别人数统计

    python人脸头发身体部位识别人数统计 如需安装运行环境或远程调试,可加QQ905733049, 或QQ2945218359由专业技术人员远程协助! 运行结果如下: 代码如下: import tim ...

最新文章

  1. Deepin 20.2.3系统标题栏及其按钮美化
  2. 幻读Java_脏读、幻读、不可重复读和丢失更新
  3. HTTP / HTTPS抓包工具-Fiddler
  4. 武林c语言,c语言printf函数的使用
  5. Unknown initial character set index ‘255‘ received from server.
  6. Spring MVC 3.0 深入
  7. HDU 2176:取(m堆)石子游戏(Nim博弈)
  8. 锤子手机T2发布会PPT模板
  9. Web前端开发面试题——将字符串转成驼峰写法
  10. word表格转图片线条不会缺失方法
  11. hadoop之求和和自定义排序编程
  12. Leetcode实战:121.买卖股票的最佳时机
  13. 散点数据的包络线获取(MATLAB)
  14. 柳如是,当得奇女子。
  15. 哈啰A80青春版体验:避繁就简,享受智慧骑行带来的乐趣
  16. HDU - 4598 Difference
  17. js日历多选(在表单中显示)
  18. Tomcat可以正常启动,却打不开webapps目录下的html文件
  19. 实战:从Python分析17-18赛季NBA胜率超70%球队数据开始…
  20. ZYNQ裸机LWIP双网口实现

热门文章

  1. Chrome、Edge等浏览器多线程下载功能开启
  2. android应用虚拟内存耗尽,GuardMalloc导致虚拟内存耗尽
  3. AV1比HEVC/H.265简单对比
  4. 翻译《Pro SQL Server Internals,2nd edition》的CHAPTER 3 Statistics的Introduction to SQL Server Statistics等
  5. 2021-04-29 微信登录简易版
  6. 机器人底盘的核心技术及应用案例
  7. 96-Java的打印流、打印流重定向、补充知识:Properties、commons-io框架
  8. 动态规划——背包问题01背包
  9. 《Windows 程序设计(第3版)》——导读
  10. oracle ora-03114