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 获取文件列表(或是目录例表)
Mar 25 Python
Python中的文件和目录操作实现代码
Mar 13 Python
Django实现学生管理系统
Feb 26 Python
Python datetime和unix时间戳之间相互转换的讲解
Apr 01 Python
Python编程实现tail-n查看日志文件的方法
Jul 08 Python
我们为什么要减少Python中循环的使用
Jul 10 Python
使用Python测试Ping主机IP和某端口是否开放的实例
Dec 17 Python
jupyter notebook 实现matplotlib图动态刷新
Apr 22 Python
Nginx+Uwsgi+Django 项目部署到服务器的思路详解
May 08 Python
filter使用python3代码进行迭代元素的实例详解
Dec 03 Python
python 可视化库PyG2Plot的使用
Jan 21 Python
Python实现制作销售数据可视化看板详解
Nov 27 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设计模式 Bridge (桥接模式)
2011/06/26 PHP
PHP中extract()函数的定义和用法
2012/08/17 PHP
PHP论坛实现积分系统的思路代码详解
2020/06/01 PHP
js 判断上传文件大小及格式代码
2013/11/13 Javascript
jQuery Masonry瀑布流插件使用详解
2014/11/17 Javascript
javascript简单实现图片预加载
2014/12/03 Javascript
Angular中$compile源码分析
2016/01/28 Javascript
JavaScript 消息框效果【实现代码】
2016/04/27 Javascript
Bootstrap自动适应PC、平板、手机的Bootstrap栅格系统
2016/05/27 Javascript
Nodejs实现短信验证码功能
2017/02/09 NodeJs
JS操作xml对象转换为Json对象示例
2017/03/25 Javascript
vue超时计算的组件实例代码
2018/07/09 Javascript
原生JS封装_new函数实现new关键字的功能
2018/08/12 Javascript
Vue全局loading及错误提示的思路与实现
2019/08/09 Javascript
ES2020系列之空值合并运算符 '??'
2020/07/22 Javascript
[53:10]Secret vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python通过websocket与js客户端通信示例分析
2014/06/25 Python
编写自定义的Django模板加载器的简单示例
2015/07/21 Python
使用Python生成随机密码的示例分享
2016/02/18 Python
利用pyinstaller或virtualenv将python程序打包详解
2017/03/22 Python
Python通过Pygame绘制移动的矩形实例代码
2018/01/03 Python
python使用tensorflow深度学习识别验证码
2018/04/03 Python
python更改已存在excel文件的方法
2018/05/03 Python
如何用Python来理一理红楼梦里的那些关系
2019/08/14 Python
python在OpenCV里实现投影变换效果
2019/08/30 Python
Python sublime安装及配置过程详解
2020/06/29 Python
关于html字符串正则判断和匹配的具体使用
2019/12/12 HTML / CSS
蒙蒂塞罗商店:Monticello Shop
2018/11/25 全球购物
大学自我鉴定
2013/12/20 职场文书
企业演讲比赛主持词
2014/03/18 职场文书
第一批党的群众路线教育实践活动总结报告
2014/07/03 职场文书
上甘岭观后感
2015/06/10 职场文书
公司团队口号霸气押韵
2015/12/24 职场文书
辞职报告(范文三篇)
2019/08/27 职场文书
在pyCharm中下载第三方库的方法
2021/04/18 Python
TV动画《八十龟酱观察日记》第四季宣传PV公布
2022/04/06 日漫