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 相关文章推荐
Python3基础之基本运算符概述
Aug 13 Python
学习python类方法与对象方法
Mar 15 Python
Python中input与raw_input 之间的比较
Aug 20 Python
Python使用ConfigParser模块操作配置文件的方法
Jun 29 Python
Python双向循环链表实现方法分析
Jul 30 Python
详解django自定义中间件处理
Nov 21 Python
python3.7 sys模块的具体使用
Jul 22 Python
python模拟实现斗地主发牌
Jan 07 Python
Python读入mnist二进制图像文件并显示实例
Apr 24 Python
如何配置关联Python 解释器 Anaconda的教程(图解)
Apr 30 Python
基于python调用jenkins-cli实现快速发布
Aug 14 Python
python日志通过不同的等级打印不同的颜色(示例代码)
Jan 13 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
山进SANGEAN ATS-909X电路分析
2021/03/02 无线电
提升PHP执行速度全攻略(上)
2006/10/09 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十四)
2014/06/26 PHP
浅谈php和.net的区别
2014/09/28 PHP
WordPress中Gravatar头像缓存到本地及相关优化的技巧
2015/12/19 PHP
PHP判断访客是否手机端(移动端浏览器)访问的方法总结【4种方法】
2019/03/27 PHP
用Laravel轻松处理千万级数据的方法实现
2020/12/25 PHP
来自国外的页面JavaScript文件优化
2010/12/08 Javascript
EXTJS FORM HIDDEN TEXTFIELD 赋值 使用value不好用的问题
2011/04/16 Javascript
firefox下jquery ajax返回object XMLDocument处理方法
2014/01/26 Javascript
jQuery实现点击按钮弹出可关闭层的浮动层插件
2015/09/19 Javascript
深入理解bootstrap框架之第二章整体架构
2016/10/09 Javascript
js实现点击每个li节点,都弹出其文本值及修改
2016/12/15 Javascript
jQuery插件zTree实现的基本树与节点获取操作示例
2017/03/08 Javascript
详解Node.js 命令行程序开发教程
2017/06/07 Javascript
使用百度地图实现地图网格的示例
2018/02/06 Javascript
vue动态改变背景图片demo分享
2018/09/13 Javascript
JavaScript设计模式之观察者模式实例详解
2019/01/16 Javascript
解决vue-cli webpack打包开启Gzip 报错问题
2019/07/24 Javascript
layui数据表格跨行自动合并的例子
2019/09/02 Javascript
js中的面向对象之对象常见创建方法详解
2019/12/16 Javascript
微信小程序8种数据通信的方式小结
2020/02/03 Javascript
python中xrange和range的区别
2014/05/13 Python
Python实例之wxpython中Frame使用方法
2014/06/09 Python
pytorch多进程加速及代码优化方法
2019/08/19 Python
基于python3实现倒叙字符串
2020/02/18 Python
keras中的卷积层&池化层的用法
2020/05/22 Python
护士检查书
2014/01/17 职场文书
企业法人授权委托书范本
2014/09/23 职场文书
群众路线学习心得体会范文
2014/11/05 职场文书
党的群众路线教育实践活动学习笔记范文
2014/11/06 职场文书
农民工工资承诺书大全
2015/05/04 职场文书
八年级数学教学反思
2016/02/17 职场文书
2016年村干部公开承诺书(公开承诺事项)
2016/03/25 职场文书
Python 制作自动化翻译工具
2021/04/25 Python
解析redis hash应用场景和常用命令
2021/08/04 Redis