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中用split()方法分割字符串的使用介绍
May 20 Python
Python中的日期时间处理详解
Nov 17 Python
windows系统下Python环境搭建教程
Mar 28 Python
Python中序列的修改、散列与切片详解
Aug 27 Python
Python通过OpenCV的findContours获取轮廓并切割实例
Jan 05 Python
Python 查看文件的读写权限方法
Jan 23 Python
Django unittest 设置跳过某些case的方法
Dec 26 Python
python  logging日志打印过程解析
Oct 22 Python
python 将dicom图片转换成jpg图片的实例
Jan 13 Python
浅谈python输出列表元素的所有排列形式
Feb 26 Python
Python SMTP配置参数并发送邮件
Jun 16 Python
浅谈Python数学建模之数据导入
Jun 23 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
global.php
2006/12/09 PHP
php批量更改数据库表前缀实现方法
2013/10/26 PHP
php随机获取金山词霸每日一句的方法
2015/07/09 PHP
php无限级评论嵌套实现代码
2018/04/18 PHP
laravel 验证错误信息到 blade模板的方法
2019/09/29 PHP
jQuery UI Autocomplete 1.8.16 中文输入修正代码
2012/04/16 Javascript
javascript简单事件处理和with用法介绍
2013/09/16 Javascript
js中数组排序sort方法的原理分析
2014/11/20 Javascript
鼠标经过子元素触发mouseout,mouseover事件的解决方案
2015/07/26 Javascript
jQuery实现伪分页的方法分享
2016/02/17 Javascript
JavaScript和jQuery获取input框的绝对位置实现方法
2016/10/13 Javascript
总结几道关于Node.js的面试问题
2017/01/11 Javascript
jquery中$.fn和图片滚动效果实现的必备知识总结
2017/04/21 jQuery
javascript中mouseenter与mouseover的异同
2017/06/06 Javascript
React组件refs的使用详解
2018/02/09 Javascript
为jquery的ajax请求添加超时timeout时间的操作方法
2018/09/04 jQuery
详解koa2学习中使用 async 、await、promise解决异步的问题
2018/11/13 Javascript
总结4个方面优化Vue项目
2019/02/11 Javascript
Win10下Python3.7.3安装教程图解
2019/07/08 Python
python rsa实现数据加密和解密、签名加密和验签功能
2019/09/18 Python
基于Python实现扑克牌面试题
2019/12/11 Python
django ObjectDoesNotExist 和 DoesNotExist的用法
2020/07/09 Python
python 实现IP子网计算
2021/02/18 Python
Keras保存模型并载入模型继续训练的实现
2021/02/20 Python
css3 border-image使用说明
2010/06/23 HTML / CSS
Html5 canvas画图白板踩坑
2020/06/01 HTML / CSS
全球游戏Keys和卡片市场:GamesDeal
2018/03/28 全球购物
Internet体系结构
2014/12/21 面试题
梅花魂教学反思
2014/04/25 职场文书
中学生思想品德评语
2014/12/31 职场文书
海上钢琴师观后感
2015/06/03 职场文书
党员反邪教心得体会
2016/01/15 职场文书
2019朋友新婚祝福语精选
2019/10/10 职场文书
CSS作用域(样式分割)的使用汇总
2021/11/07 HTML / CSS
JavaScript 与 TypeScript之间的联系
2021/11/27 Javascript
一篇文章弄清楚Ajax请求的五个步骤
2022/03/17 Javascript