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备份Mysql脚本
Aug 11 Python
全面解读Python Web开发框架Django
Jun 30 Python
Python类定义和类继承详解
May 08 Python
从源码解析Python的Flask框架中request对象的用法
Jun 02 Python
Python实现计算两个时间之间相差天数的方法
May 10 Python
Python+pandas计算数据相关系数的实例
Jul 03 Python
详解python中index()、find()方法
Aug 29 Python
Python os模块常用方法和属性总结
Feb 20 Python
python绘制趋势图的示例
Sep 17 Python
TensorFlow中tf.batch_matmul()的用法
Jun 02 Python
Python编程中Python与GIL互斥锁关系作用分析
Sep 15 Python
Python Django / Flask如何使用Elasticsearch
Apr 19 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正则表达式替换站点关键字链接后空白的解决方法
2014/09/16 PHP
php利用cookies实现购物车的方法
2014/12/10 PHP
Yii2框架实现数据库常用操作总结
2017/02/08 PHP
用JQuery调用Session的实现代码
2010/10/29 Javascript
避免回车键导致的页面无意义刷新的解决方法
2011/04/12 Javascript
jquery判断浏览器类型的代码
2012/11/05 Javascript
js中的replace方法使用介绍
2013/10/28 Javascript
jquery使用append(content)方法注意事项分享
2014/01/06 Javascript
jquery text()方法取标签中的文本
2014/07/25 Javascript
javascript获取系统当前时间的方法
2015/11/19 Javascript
Vue.js Ajax动态参数与列表显示实现方法
2016/10/20 Javascript
vue.js单文件组件中非父子组件的传值实例
2018/09/13 Javascript
微信小程序使用蓝牙小插件
2019/09/23 Javascript
微信小程序页面渲染实现方法
2019/11/06 Javascript
Vue 401配合Vuex防止多次弹框的案例
2020/11/11 Javascript
Python 抓取动态网页内容方案详解
2014/12/25 Python
python处理图片之PIL模块简单使用方法
2015/05/11 Python
在Python中使用正则表达式的方法
2015/08/13 Python
python安装教程
2018/02/28 Python
python 对key为时间的dict排序方法
2018/10/17 Python
解决Pycharm后台indexing导致不能run的问题
2019/06/27 Python
python 多进程并行编程 ProcessPoolExecutor的实现
2019/10/11 Python
pygame库实现俄罗斯方块小游戏
2019/10/29 Python
centos+nginx+uwsgi+Django实现IP+port访问服务器
2019/11/15 Python
Python3内置函数chr和ord实现进制转换
2020/06/05 Python
python在一个范围内取随机数的简单实例
2020/08/16 Python
如何在网站上添加谷歌定位信息
2016/04/16 HTML / CSS
HTML5 语音搜索(淘宝店语音搜素)
2013/01/03 HTML / CSS
解决HTML5中滚动到底部的事件问题
2019/08/22 HTML / CSS
Interrail法国:乘火车探索欧洲,最受欢迎的欧洲铁路通票
2019/08/27 全球购物
家长对孩子评语
2014/01/30 职场文书
就业协议书范本
2014/04/11 职场文书
感恩教育活动总结
2014/05/05 职场文书
无锡灵山大佛导游词
2015/02/09 职场文书
css height属性中的calc方法详解
2021/06/03 HTML / CSS
python geopandas读取、创建shapefile文件的方法
2021/06/29 Python