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中super的用法实例
May 28 Python
Python实现计算两个时间之间相差天数的方法
May 10 Python
使用Python的package机制如何简化utils包设计详解
Dec 11 Python
详解python3中的真值测试
Aug 13 Python
python与字符编码问题
May 24 Python
对Python强大的可变参数传递机制详解
Jun 13 Python
Python Collatz序列实现过程解析
Oct 12 Python
使用Python paramiko模块利用多线程实现ssh并发执行操作
Dec 05 Python
在Pytorch中计算卷积方法的区别详解(conv2d的区别)
Jan 03 Python
Python内建序列通用操作6种实现方法
Mar 26 Python
基于Python把网站域名解析成ip地址
May 25 Python
python字符串的一些常见实用操作
Apr 06 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 auth_http类库进行身份效验
2009/03/19 PHP
用PHP的超级变量$_GET获取HTML表单(Form) 数据
2011/05/07 PHP
教你如何用php实现LOL数据远程获取
2014/06/10 PHP
PHP获取数组中重复最多的元素的实现方法
2014/11/11 PHP
wampserver改变默认网站目录的办法
2015/08/05 PHP
Thinkphp5框架实现获取数据库数据到视图的方法
2019/08/14 PHP
srcElement表格样式
2006/09/03 Javascript
JavaScript 常用函数
2009/12/30 Javascript
jquery 缓存问题的几个解决方法
2013/11/11 Javascript
JS判断变量是否为空判断是否null
2014/07/25 Javascript
javascript结合canvas实现图片旋转效果
2015/05/03 Javascript
JS获取鼠标坐标位置实例分析
2016/01/20 Javascript
页面get请求 中文参数方法乱码问题的快速解决方法
2016/05/31 Javascript
js自调用匿名函数的三种写法(推荐)
2016/08/19 Javascript
jQuery实现搜索页面关键字的功能
2017/02/16 Javascript
详解vue-router 命名路由和命名视图
2018/06/01 Javascript
jQuery实现导航样式布局操作示例【可自定义样式布局】
2018/07/24 jQuery
JS 5种遍历对象的方式
2020/06/16 Javascript
JavaScript文档加载模式以及元素获取
2020/07/28 Javascript
[03:38]TI4西雅图DOTA2前线报道 71专访
2014/07/08 DOTA
深入Python解释器理解Python中的字节码
2015/04/01 Python
详解Python2.x中对Unicode编码的使用
2015/04/03 Python
在Python的Tornado框架中实现简单的在线代理的教程
2015/05/02 Python
python中数据爬虫requests库使用方法详解
2018/02/11 Python
VSCode下好用的Python插件及配置
2018/04/06 Python
python多线程之事件Event的使用详解
2018/04/27 Python
Python学习笔记之列表推导式实例分析
2019/08/13 Python
Python数据可视化实现多种图例代码详解
2020/07/14 Python
雅诗兰黛澳大利亚官网:Estée Lauder澳大利亚
2019/05/31 全球购物
医药类个人求职的自我评价
2014/02/12 职场文书
商务日语专业自荐信
2014/04/17 职场文书
飞机制造技术专业求职信
2014/07/27 职场文书
2014年教师节寄语
2014/08/11 职场文书
2016年元旦致辞
2015/08/01 职场文书
职工的安全责任书范文!
2019/07/02 职场文书
Python matplotlib绘制雷达图
2022/04/13 Python