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 rsa 加密解密
Mar 20 Python
python队列通信:rabbitMQ的使用(实例讲解)
Dec 22 Python
Python实现的视频播放器功能完整示例
Feb 01 Python
python中的闭包函数
Feb 09 Python
python中subprocess批量执行linux命令
Apr 27 Python
浅谈python中str字符串和unicode对象字符串的拼接问题
Dec 04 Python
Pycharm设置utf-8自动显示方法
Jan 17 Python
python按比例随机切分数据的实现
Jul 11 Python
使用python实现哈希表、字典、集合操作
Dec 22 Python
Python的历史与优缺点整理
May 26 Python
通过实例解析python创建进程常用方法
Jun 19 Python
使用ITK-SNAP进行抠图操作并保存mask的实例
Jul 01 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 google或baidu分页代码
2009/11/26 PHP
PHP框架Laravel的小技巧两则
2015/02/10 PHP
ThinkPHP实现简单登陆功能
2017/04/28 PHP
php实现微信和支付宝支付的示例代码
2020/08/11 PHP
jQuery开发者都需要知道的5个小技巧
2010/01/08 Javascript
一个简单的js树形菜单
2011/12/09 Javascript
向当前style sheet中插入一个新的style实现方法
2013/04/01 Javascript
禁止iframe脚本弹出的窗口覆盖了父窗口的方法
2014/09/06 Javascript
限制上传文件大小和格式的jQuery插件实例
2015/01/24 Javascript
JavaScript转换二进制编码为ASCII码的方法
2015/04/16 Javascript
javascript实现根据iphone屏幕方向调用不同样式表的方法
2015/07/13 Javascript
分享一些常用的jQuery动画事件和动画函数
2015/11/27 Javascript
js实现的光标位置工具函数示例
2016/10/03 Javascript
在html中引入外部js文件,并调用带参函数的方法
2016/10/31 Javascript
vue.js的安装方法
2017/05/12 Javascript
React-Native使用Mobx实现购物车功能
2017/09/14 Javascript
Vue2.0 实现移动端图片上传功能
2018/05/30 Javascript
详解如何在Angular优雅编写HTTP请求
2018/12/05 Javascript
ionic+html5+API实现双击返回键退出应用
2019/09/17 Javascript
在pycharm中开发vue的方法步骤
2020/03/04 Javascript
原生JS利用transform实现banner的无限滚动示例代码
2020/06/15 Javascript
Node.js中的异步生成器与异步迭代详解
2021/01/31 Javascript
详解Python设计模式编程中观察者模式与策略模式的运用
2016/03/02 Python
Python中Django发送带图片和附件的邮件
2017/03/31 Python
pycharm 主题theme设置调整仿sublime的方法
2018/05/23 Python
python判断元素是否存在的实例方法
2020/09/24 Python
安装不同版本的tensorflow与models方法实现
2021/02/20 Python
营销总经理的岗位职责
2013/12/15 职场文书
家长学校实施方案
2014/03/15 职场文书
高中军训的心得体会
2014/09/01 职场文书
应届生简历自我评价
2015/03/11 职场文书
幼儿园音乐教学反思
2016/02/18 职场文书
sqlserver2017共享功能目录路径不可改的解决方法
2021/04/16 SQL Server
吃通javascript正则表达式
2021/04/21 Javascript
Redis RDB技术底层原理详解
2021/09/04 Redis
python中取整数的几种方法
2021/11/07 Python