python 绘制场景热力图的示例


Posted in Python onSeptember 23, 2020

我们在做诸如人群密集度等可视化的时候,可能会考虑使用热力图,在Python中能很方便地绘制热力图。

下面以识别图片中的行人,并绘制热力图为例进行讲解。

  • 步骤1:首先识别图像中的人,得到bounding box的中心坐标。识别方法多样化,坐标也可以自己定义。
  • 步骤2:将所有中心坐标放入一个list类型的变量data中,即data = [[x1,y1] [x2,y2] …]
  • 步骤3:绘制热力图,并将热力图加权叠加到原图上。

需要import的包:

import cv2
import numpy as np
from PIL import Image
from pyheatmap.heatmap import HeatMap
import matplotlib.pyplot as plt

根据识别的结果得到data的值,传入以下apply_heatmap(image,data)绘制热力图;

def apply_heatmap(image,data):
  '''image是原图,data是坐标'''
  '''创建一个新的与原图大小一致的图像,color为0背景为黑色。这里这样做是因为在绘制热力图的时候如果不选择背景图,画出来的图与原图大小不一致(根据点的坐标来的),导致无法对热力图和原图进行加权叠加,因此,这里我新建了一张背景图。'''
  background = Image.new("RGB", (image.shape[1], image.shape[0]), color=0)
  # 开始绘制热度图
  hm = HeatMap(data)
  hit_img = hm.heatmap(base=background, r = 100) # background为背景图片,r是半径,默认为10
  # ~ plt.figure()
  # ~ plt.imshow(hit_img)
  # ~ plt.show()
  #hit_img.save('out_' + image_name + '.jpeg')
  hit_img = cv2.cvtColor(np.asarray(hit_img),cv2.COLOR_RGB2BGR)#Image格式转换成cv2格式
  overlay = image.copy()
  alpha = 0.5 # 设置覆盖图片的透明度
  cv2.rectangle(overlay, (0, 0), (image.shape[1], image.shape[0]), (255, 0, 0), -1) # 设置蓝色为热度图基本色蓝色
  image = cv2.addWeighted(overlay, alpha, image, 1-alpha, 0) # 将背景热度图覆盖到原图
  image = cv2.addWeighted(hit_img, alpha, image, 1-alpha, 0) # 将热度图覆盖到原图

网站上随意找一张图片进行实验:

原图如下:

python 绘制场景热力图的示例

结果如下:

python 绘制场景热力图的示例

可视化效果可以调节,如:通过调节hm.heatmap(base=background, r = 100)中的r即可调节热力点的半径大小。

以上就是python 绘制场景热力图的示例的详细内容,更多关于python 绘制热力图的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python中splitlines()方法的使用简介
May 20 Python
如何使用七牛Python SDK写一个同步脚本及使用教程
Aug 23 Python
Python opencv实现人眼/人脸识别以及实时打码处理
Apr 29 Python
如何基于Python批量下载音乐
Nov 11 Python
Python如何获取Win7,Win10系统缩放大小
Jan 10 Python
使用Python 自动生成 Word 文档的教程
Feb 13 Python
python实现udp传输图片功能
Mar 20 Python
python pandas.DataFrame.loc函数使用详解
Mar 26 Python
python实现与redis交互操作详解
Apr 21 Python
Python参数传递及收集机制原理解析
Jun 05 Python
Django 权限管理(permissions)与用户组(group)详解
Nov 30 Python
教你一分钟在win10终端成功安装Pytorch的方法步骤
Jan 28 Python
Anaconda使用IDLE的实现示例
Sep 23 #Python
python获取时间戳的实现示例(10位和13位)
Sep 23 #Python
python rsa-oaep加密的示例代码
Sep 23 #Python
python删除文件、清空目录的实现方法
Sep 23 #Python
详解Anaconda 的安装教程
Sep 23 #Python
如何使用pycharm连接Databricks的步骤详解
Sep 23 #Python
社区版pycharm创建django项目的方法(pycharm的newproject左侧没有项目选项)
Sep 23 #Python
You might like
php反弹shell实现代码
2009/04/22 PHP
php生成PDF格式文件并且加密
2015/06/22 PHP
JavaScript 学习笔记二 字符串拼接
2010/03/28 Javascript
js中判断控件是否存在
2010/08/25 Javascript
javascript中运用闭包和自执行函数解决大量的全局变量问题
2010/12/30 Javascript
JQuery一种取同级值的方式(比如你在GridView中)
2012/03/15 Javascript
jQuery 淡出一个图像到另一个图像的实现代码
2013/06/12 Javascript
js 弹出框只弹一次(二次修改之后的)
2013/11/26 Javascript
微信浏览器内置JavaScript对象WeixinJSBridge使用实例
2015/05/25 Javascript
js全选按钮的实现方法
2015/11/17 Javascript
JavaScript数组的栈方法与队列方法详解
2016/05/26 Javascript
Windows系统下安装Node.js的步骤图文详解
2016/11/15 Javascript
微信小程序 label 组件详解及简单实例
2017/01/10 Javascript
用jquery的attr方法实现图片切换效果
2017/02/05 Javascript
vue2的todolist入门小项目的详细解析
2017/05/11 Javascript
用React实现一个完整的TodoList的示例代码
2017/10/30 Javascript
详解如何在nuxt中添加proxyTable代理
2018/08/10 Javascript
小程序实现分类页
2019/07/12 Javascript
解决node终端下运行js文件不支持ES6语法
2020/04/04 Javascript
vue 实现tab切换保持数据状态
2020/07/21 Javascript
python中单下划线_的常见用法总结
2018/07/10 Python
使用python的pyplot绘制函数实例
2020/02/13 Python
html5中为audio标签增加停止按钮动作实现方法
2013/01/04 HTML / CSS
哥德堡通行证:Gothenburg Pass
2019/12/09 全球购物
简单介绍Object类的功能、常用方法
2013/10/02 面试题
递归实现回文判断(如:abcdedbca就是回文,判断一个面试者对递归理解的简单程序)
2013/04/28 面试题
介绍一下#error预处理
2015/09/25 面试题
一套中级Java程序员笔试题
2015/01/14 面试题
《猴子种果树》教学反思
2014/04/26 职场文书
党委书记个人对照检查材料
2014/09/15 职场文书
婚姻出轨保证书
2015/05/08 职场文书
魂断蓝桥观后感
2015/06/10 职场文书
色戒观后感
2015/06/12 职场文书
2015年主婚人婚礼致辞
2015/07/28 职场文书
小学大队长竞选稿
2015/11/20 职场文书
2019通用版导游词范本!
2019/08/07 职场文书