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的Django框架代码的一些示例
Apr 20 Python
MySQL中表的复制以及大型数据表的备份教程
Nov 25 Python
Python多进程库multiprocessing中进程池Pool类的使用详解
Nov 24 Python
TensorFlow实现Batch Normalization
Mar 08 Python
python实现按行分割文件
Jul 22 Python
python自动化测试之DDT数据驱动的实现代码
Jul 23 Python
利用python实现短信和电话提醒功能的例子
Aug 08 Python
基于numpy中的expand_dims函数用法
Dec 18 Python
parser.add_argument中的action使用
Apr 20 Python
sklearn线性逻辑回归和非线性逻辑回归的实现
Jun 09 Python
Python confluent kafka客户端配置kerberos认证流程详解
Oct 12 Python
python执行js代码的方法
May 13 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 cli模式学习(PHP命令行模式)
2013/06/03 PHP
PHP关于foreach复制知识点总结
2019/01/28 PHP
PHP7.0连接DB操作实例分析【基于mysqli】
2019/09/26 PHP
Javascript 自定义类型方法小结
2010/03/02 Javascript
js 中将多个逗号替换为一个逗号的代码
2014/06/07 Javascript
javascript setinterval 的正确语法如何书写
2014/06/17 Javascript
NodeJs基本语法和类型
2015/02/13 NodeJs
javascript数据结构与算法之检索算法
2015/04/04 Javascript
JS工作中的小贴士之”闭包“与事件委托的”阻止冒泡“
2016/06/16 Javascript
Angularjs结合Bootstrap制作的一个TODO List
2016/08/18 Javascript
使用JS代码实现点击按钮下载文件
2016/11/12 Javascript
Node.js 实现简单小说爬虫实例
2016/11/18 Javascript
php结合js实现多条件组合查询
2019/05/28 Javascript
JS实现的对象去重功能示例
2019/06/04 Javascript
vue实现鼠标移过出现下拉二级菜单功能
2019/12/12 Javascript
详解Typescript 内置的模块导入兼容方式
2020/05/31 Javascript
Python 获得13位unix时间戳的方法
2017/10/20 Python
pygame游戏之旅 载入小车图片、更新窗口
2018/11/20 Python
对pyqt5多线程正确的开启姿势详解
2019/06/14 Python
python自动循环定时开关机(非重启)测试
2019/08/26 Python
解决PyCharm无法使用lxml库的问题(图解)
2020/12/22 Python
如何用 Python 处理不平衡数据集
2021/01/04 Python
各大浏览器 CSS3 和 HTML5 兼容速查表 图文
2010/04/01 HTML / CSS
canvas实现图片马赛克的示例代码
2018/03/26 HTML / CSS
销售业务实习自我鉴定
2013/09/23 职场文书
《听鱼说话》教学反思
2014/02/15 职场文书
安全大检查实施方案
2014/02/22 职场文书
投资协议书范本
2014/04/21 职场文书
一年级小学生评语
2014/04/22 职场文书
公务员政审个人总结
2015/02/12 职场文书
学术会议通知
2015/04/15 职场文书
教师节表彰会主持词
2015/07/06 职场文书
网络研修随笔感言
2015/11/18 职场文书
Python获取百度热搜的完整代码
2021/04/07 Python
JavaScript实现简单拖拽效果
2021/09/15 Javascript
Python可视化学习之seaborn绘制矩阵图详解
2022/02/24 Python