运动热力图
这个示例应用程序可以用来观察一段时间内的运动模式。
这个示例应用程序可以用来观察一段时间内的运动模式。例如,它可以用来观察工厂车间的入口使用情况,或者商店内顾客的活动模式。
您将学习的内容
- 背景差分
- 阈值应用
- 随时间累积变化的像素
- 添加颜色/热图
准备材料
- Python* 2.7 或更高版本
- OpenCV 3.3.0 或更高版本
- 来自 https://github.com/opencv/opencv/blob/master/samples/data/vtest.avi 的 vtest.avi 视频
安装
- 您需要安装额外的模块才能使用 MOG 背景减除器。本教程在 Windows* 上测试过,最简单的安装方法是使用
pip install opencv-contrib-python
- 从 https://github.com/opencv/opencv/blob/master/samples/data/vtest.avi 下载 vtest.avi 视频,并将其放在与 python 脚本相同的文件夹中。
- 运行 python 脚本。完成后,您应该会看到一个 diff-overlay.jpg 文件。
获取代码
代码包含在该仓库的文件夹中的 .py 文件中。
工作原理
OpenCV 中使用的主要 API 是
- MOG 背景减除器 (
cv2.bgsegm.createBackgroundSubtractorMOG()
) - https://docs.opencv.ac.cn/3.0-beta/modules/video/doc/motion_analysis_and_object_tracking.html?highlight=createbackgroundsubtractormog#createbackgroundsubtractormog注意:文档已过时,正确的初始化方法是
cv2.bgsegm.createBackgroundSubtractorMOG()
cv2.threshold()
- https://docs.opencv.ac.cn/3.3.1/d7/d4d/tutorial_py_thresholding.htmlcv2.add()
- https://docs.opencv.ac.cn/3.2.0/d0/d86/tutorial_py_image_arithmetics.htmlcv2.applyColorMap()
- https://docs.opencv.ac.cn/3.0-beta/modules/imgproc/doc/colormaps.htmlcv2.addWeighted()
- https://docs.opencv.ac.cn/3.2.0/d0/d86/tutorial_py_image_arithmetics.html
该应用程序获取每个帧,首先使用 cv2.bgsegm.createBackgroundSubtractorMOG()
对象应用背景差分来创建掩码。然后将阈值应用于掩码以消除少量运动,并设置每次迭代的累积值。阈值的结果被添加到累积图像(一个从全零开始并在每次迭代中添加而不删除任何内容的图像),这记录了运动。最后,将颜色图应用于累积图像,以便更容易地观察运动。然后,将该彩色图像与第一帧的副本结合使用 cv2.addWeighted
以完成叠加。
重要提示:此软件是示例软件。它并非设计或用于在任何医疗、救生或维持生命系统、运输系统、核系统或任何其他系统故障可能导致严重伤害或死亡的任何其他关键任务应用中使用。该软件可能未经过充分测试,可能包含错误;它可能不适用于商业发布。尚未获得该软件的任何监管批准,因此该软件可能未被认证可在某些国家/地区或环境中使用的。