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中的装饰器的用法
Apr 24 Python
Python计算字符宽度的方法
Jun 14 Python
Python设计模式之观察者模式简单示例
Jan 10 Python
一个简单的python爬虫程序 爬取豆瓣热度Top100以内的电影信息
Apr 17 Python
Python实现计算圆周率π的值到任意位的方法示例
May 08 Python
python smtplib模块自动收发邮件功能(一)
May 22 Python
python MNIST手写识别数据调用API的方法
Aug 08 Python
对python 树状嵌套结构的实现思路详解
Aug 09 Python
python tkinter canvas使用实例
Nov 04 Python
matplotlib.pyplot画图并导出保存的实例
Dec 07 Python
pycharm 实现复制一行的快捷键
Jan 15 Python
FP-growth算法发现频繁项集——发现频繁项集
Jun 24 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
全国FM电台频率大全 - 10 江苏省
2020/03/11 无线电
php图片上传存储源码并且可以预览
2011/08/26 PHP
那些年我们错过的魔术方法(Magic Methods)
2014/01/14 PHP
推荐一本PHP程序猿都应该拜读的书
2014/12/31 PHP
smarty内部日期函数html_select_date()用法实例分析
2015/07/08 PHP
javascript 数组学习资料收集
2010/04/11 Javascript
Moment.js 不容错过的超棒Javascript日期处理类库
2012/04/15 Javascript
基于JavaScript实现移动端TAB触屏切换效果
2015/10/20 Javascript
jQuery过滤特殊字符及JS字符串转为数字
2016/05/26 Javascript
JAVA中截取字符串substring用法详解
2017/04/14 Javascript
详解angular ui-grid之过滤器设置
2017/06/07 Javascript
vue中typescript装饰器的使用方法超实用教程
2019/06/17 Javascript
vue设置动态请求地址的例子
2019/11/01 Javascript
[03:28]2014DOTA2国际邀请赛 EG战队官方纪录片
2014/07/21 DOTA
python Pygame的具体使用讲解
2017/11/03 Python
python遍历文件夹下所有excel文件
2018/01/03 Python
Python加载带有注释的Json文件实例
2018/05/23 Python
django 在原有表格添加或删除字段的实例
2018/05/27 Python
Python机器学习库scikit-learn安装与基本使用教程
2018/06/25 Python
python中从str中提取元素到list以及将list转换为str的方法
2018/06/26 Python
Python socket实现的简单通信功能示例
2018/08/21 Python
python通过移动端访问查看电脑界面
2020/01/06 Python
keras实现VGG16 CIFAR10数据集方式
2020/07/07 Python
Python接口自动化测试的实现
2020/08/28 Python
详解Python中import机制
2020/09/11 Python
Python批量获取并保存手机号归属地和运营商的示例
2020/10/09 Python
详解移动端HTML5页面端去掉input输入框的白色背景和边框(兼容Android和ios)
2016/12/15 HTML / CSS
内科护士实习自我鉴定
2013/10/17 职场文书
安全生产投入制度
2014/01/29 职场文书
优秀共产党员先进事迹材料
2014/05/06 职场文书
违纪检讨书
2015/01/27 职场文书
2015年仓库管理工作总结
2015/05/25 职场文书
员工担保书范本
2015/09/22 职场文书
年中了,该如何写好个人述职报告?
2019/07/02 职场文书
《鲁班学艺》读后感3篇
2019/11/27 职场文书
SQL Server中锁的用法
2022/05/20 SQL Server