OpenCV是一个强大的图像和视频处理库,在这篇文章中,我将创建一个运动热图,用于检测运动、以及物体或人的流动方向,在投影公共区域时可以对建筑师有所帮助。

简介

OpenCV,或(开源计算机视觉)是英特尔于1999年开发的一个库,主要提供计算机视觉和实时视频的相关操作,它是用C++编写的,同时也支持多种其它语言(包括Python)。

工作流程

这个程序是基于一种被称为高斯背景差法的技术,这项技术被广泛应用于用稳定的摄像机检测运动物体。

背景差法创建一个表示帧(图像的静态部分)背景的模板,对于每一帧,它将减去前一帧。

让我们对该算法的两个主要步骤进行一个简要概述:

  • 背景初始化:在第一步中,通过冻结第一帧来计算背景的模型。

  • 更新:在第二步中,下一帧将减去上一帧,如果两帧之间发生变化(移动),则这些帧的差异将反映出该变化,可以通过应用过滤器来进行提取差异信息。

以下是背景差法应用于从城市摄像机录制的短视频的示例:

代码

对于整个项目存储库,在此处可以获取。

  • https://github.com/robertosannazzaro/motion-heatmap-opencv/blob/master/README.md

代码首先读取输入的视频文件并初始化所需的一些变量:

capture = cv2.VideoCapture('input.mp4')background_subtractor = cv2.bgsegm.createBackgroundSubtractorMOG()length = int(capture.get(cv2.CAP_PROP_FRAME_COUNT))

然后,for循环遍历视频帧:

for i in range(0, length):ret, frame = capture.read()# If first frame    if first_iteration_indicator == 1:first_frame = copy.deepcopy(frame)        height, width = frame.shape[:2]        accum_image = np.zeros((height, width), np.uint8)

第一个if块检查该帧是否为视频的第一帧,这样做是为了初始化背景差法的背景,然后accum_image使用与该帧大小相对应的大小来初始化该数组。

filter = background_subtractor.apply(frame)  # remove the background
threshold = 2maxValue = 2ret, th1 = cv2.threshold(filter, threshold, maxValue, cv2.THRESH_BINARY)
accum_image = cv2.add(accum_image, th1)
color_image_video = cv2.applyColorMap(accum_image, cv2.COLORMAP_HOT)

为了消除例如风,小鸟飞行等少量运动,将阈值与maxValue一起应用到遮罩上。

然后将掩码的结果添加到accum_image数组中,对每个帧执行此操作,结果由用于存储视频中发生的每个运动的accum_image数组组成。

此外,在最后,当已经对每个帧执行了先前描述的操作时,颜色映射被应用于遮罩并且遮罩与当前帧合并。

更进一步,可以制作一个显示热图逐帧衰减的视频。为了实现这一点,将导出每个帧,然后再次使用cv2,通过合并所有帧来生成视频:

video = cv2.VideoWriter('output.avi', fourcc, 30.0, (width, height))for image in images:    video.write(cv2.imread(os.path.join(image_folder, image)))
cv2.destroyAllWindows()

最后结果

原文链接:https://towardsdatascience.com/build-a-motion-heatmap-videousing-opencv-with-python-fd806e8a2340

☆ END ☆

如果看到这里,说明你喜欢这篇文章,请转发、点赞。微信搜索「uncle_pn」,欢迎添加小编微信「 mthler」,每日朋友圈更新一篇高质量博文(无广告)。

扫描二维码添加小编↓

使用OpenCV+Python构建运动热图视频相关推荐

  1. openCV + python实现从摄像头获取视频后,以镜像/水平翻转输出

    opencv + python实现从摄像头获取视频后,以镜像/水平翻转输出 笔者的配置如下: opencv 4.2.0 python 3.7.6 如图,处理前的 摄像头获取并输出的都是翻转后的视频 处 ...

  2. Python生物信息学⑥绘制热图及火山图

    Python生物信息学⑥绘制热图及火山图 Python生物信息学③提取差异基因 通过上Python生物信息学③提取差异基因得到了该数据集的差异分析的两个关键参数,1.差异倍数(foldchange)以 ...

  3. python英雄联盟万图视频制作

    python英雄联盟万图视频制作 前言 图片数据采集 图片合成视频 视频添加音效 前言 数据来源: 英雄联盟官网 开发环境:win10.python3.7 开发工具:pycharm 图片数据采集 爬虫 ...

  4. python画矩阵热图_如何用python的matplotlib绘制热图

    python使用matplotlib绘制热图 python常用的绘图库就是matplotlib,今天在给公司绘图时,偶然间发现matplotlib可以绘制热图,并且十分简洁,拿出来跟大家分享一下.(由 ...

  5. python matplotlib 绘制热图(极简)

    代码 import matplotlib.pyplot as plt from matplotlib import cmdef Hotmap():datas=[[1,2,3],[4,5,6],[7,8 ...

  6. python相关性矩阵热图_python – 相关热图

    另一种方法是使用seaborn中的热图函数来绘制协方差.此示例使用R中ISLR程序包中的自动数据集(与您显示的示例中的相同). import pandas.rpy.common as com impo ...

  7. opencv 人脸识别_人工智能-OpenCV+Python实现人脸识别(视频人脸检测)

    上期文章我们分享了opencv识别图片中的人脸,OpenCV图片人脸检测,本期我们分享一下如何从视频中检测到人脸 视频人脸检测 OpenCV打开摄像头特别简单,只需要如下一句代码 capture = ...

  8. 人工智能-OpenCV+Python实现人脸识别(视频人脸检测)

    上期文章我们分享了opencv识别图片中的人脸,OpenCV图片人脸检测,本期我们分享一下如何从视频中检测到人脸 视频人脸检测 OpenCV打开摄像头特别简单,只需要如下一句代码 capture = ...

  9. Python构建自动在线刷视频—一个只能做不能说的项目

    文章目录 前言 一.完成功能的条件 1.必备条件 2.非必备条件 二.解决Python软件的坑 1.安装Python 2.安装Selenium 3.下载并安装Chrome驱动 二.万事具备.准备开工了 ...

最新文章

  1. 组策略之(5)-------电源管理设置
  2. 获取数组名称 php,php 获取美国50个州的名称、简写对应数组用法示例
  3. ActionScript 3.0 学习笔记三
  4. matlab 读取mov文件格式,VideoReader 支持的文件格式 - MATLAB VideoReader.getFileFormats - MathWorks 中国...
  5. java jar 配置文件路径_java jar 配置文件的相对路径问题
  6. 从零开始Android游戏编程(第二版) 第九章 游戏程序的生命周期
  7. 正交法设计测试用例时可以使用的工具allpairs---生成正交表
  8. spring session过期时间设置
  9. 使用SVN将项目从服务器下载至本地
  10. HTML5课题意义,毕业论文选题的意义万能套话
  11. 根据题目完成以下50道SQL语句
  12. 非接触物体尺寸形态测量(G题)
  13. luogu P5234 [JSOI2012]越狱老虎桥
  14. QT自制精美Ui模板系列展示(一)桃子风格模板 - 二次开发专用
  15. 高博14讲--第三讲 三维空间刚体运动
  16. 堡垒主机内控管理平台产品方案介绍
  17. 魔鬼交易员害了法兴银行却救了全球经济?
  18. 为什么APP开发公司一家报价5万一家报价15万?
  19. 2021-2027全球与中国电动汽车电子水泵市场现状及未来发展趋势
  20. 周鸿祎2013的年会演讲稿

热门文章

  1. modernizr简介
  2. (OK) 华为全网通 honor 5x - 成功将 KIW-AL10C00B258 升级到 KIW-AL10C00B430
  3. 专家支招房贷省钱攻略:公积金贷款最多省19万
  4. 启明星辰与绿盟科技的培训文档
  5. 西邮Linux兴趣小组第一次技术分享会
  6. 智能电池巡检箱监控系统方案
  7. Java实验(13) 正八边形类
  8. python之json数据格式化输出方法
  9. 百度刷相关wf5搜_引流一哥:微信搜一搜seo排名优化
  10. php性能测试xhprof,Xhprof php性能测试工具用法小结