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之总结参数的传递
Oct 10 Python
Python实现数据库编程方法详解
Jun 09 Python
Python画图学习入门教程
Jul 01 Python
小小聊天室Python代码实现
Aug 17 Python
基于Python和Scikit-Learn的机器学习探索
Oct 16 Python
Python文件监听工具pyinotify与watchdog实例
Oct 15 Python
Python 脚本获取ES 存储容量的实例
Dec 27 Python
python钉钉机器人运维脚本监控实例
Feb 20 Python
利用Python+阿里云实现DDNS动态域名解析的方法
Apr 01 Python
python3.7简单的爬虫实例详解
Jul 08 Python
Python中logging日志记录到文件及自动分割的操作代码
Aug 05 Python
Python中logging日志的四个等级和使用
Nov 17 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
超神学院:天使彦公认最美的三个视角,网友:我的天使快下凡吧!
2020/03/02 国漫
PHP 中的批处理的实现
2007/06/14 PHP
PHP中Http协议post请求参数
2015/11/02 PHP
PHP模版引擎原理、定义与用法实例
2019/03/29 PHP
gearman中任务的优先级和返回状态实例分析
2020/02/27 PHP
jquery简单体验
2007/01/10 Javascript
jquery异步跨域访问代码
2013/06/28 Javascript
innerHTML动态添加html代码和脚本兼容多个浏览器
2014/10/11 Javascript
jQuery中选择器的基础使用教程
2016/05/23 Javascript
Javascript中的数组常用方法解析
2016/06/17 Javascript
JS多文件上传的实例代码
2017/01/11 Javascript
windows下vue-cli导入bootstrap样式
2017/04/25 Javascript
nodejs实现的简单web服务器功能示例
2018/03/15 NodeJs
vue 利用路由守卫判断是否登录的方法
2018/09/29 Javascript
浅谈 Webpack 如何处理图片(开发、打包、优化)
2019/05/15 Javascript
JS XMLHttpRequest原理与使用方法深入详解
2020/04/30 Javascript
使用AutoJs实现微信抢红包的代码
2020/12/31 Javascript
[44:58]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第二场
2018/04/06 DOTA
python基础入门学习笔记(Python环境搭建)
2016/01/13 Python
python 并发编程 多路复用IO模型详解
2019/08/20 Python
Python 最强编辑器详细使用指南(PyCharm )
2019/09/16 Python
通过python扫描二维码/条形码并打印数据
2019/11/14 Python
深入理解Tensorflow中的masking和padding
2020/02/24 Python
美国购买体育赛事门票网站:TicketCity
2019/03/06 全球购物
三星法国官方网站:Samsung法国
2019/10/31 全球购物
俄罗斯建筑和装饰材料在线商店:Stroilandia
2020/07/25 全球购物
Linux如何为某个操作添加别名
2013/03/01 面试题
药剂专业毕业生求职信
2014/06/24 职场文书
党员应该树立反腐倡廉的坚定意识思想汇报
2014/09/12 职场文书
廉洁自律承诺书范文
2015/04/28 职场文书
2015上半年个人工作总结
2015/07/27 职场文书
小学生教师节广播稿
2015/08/19 职场文书
浅谈由position属性引申的css进阶讨论
2021/05/25 HTML / CSS
OpenCV全景图像拼接的实现示例
2021/06/05 Python
Vue全局事件总线你了解吗
2022/02/24 Vue.js
Elasticsearch 配置详解
2022/04/19 Java/Android