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模块MySQLdb安装详解
Apr 09 Python
Python的MongoDB模块PyMongo操作方法集锦
Jan 05 Python
Python3 操作符重载方法示例
Nov 23 Python
python制作mysql数据迁移脚本
Jan 01 Python
python从入门到精通 windows安装python图文教程
May 18 Python
Django 开发调试工具 Django-debug-toolbar使用详解
Jul 23 Python
Python安装selenium包详细过程
Jul 23 Python
Django中使用haystack+whoosh实现搜索功能
Oct 08 Python
flask 实现token机制的示例代码
Nov 07 Python
keras topN显示,自编写代码案例
Jul 03 Python
Python eval函数原理及用法解析
Nov 14 Python
python实现的人脸识别打卡系统
May 08 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实现Unicode编码相互转换的方法示例
2020/11/17 PHP
javascript 建设银行登陆键盘
2008/06/10 Javascript
getElementsByTagName vs selectNodes效率 及兼容的selectNodes实现
2010/02/26 Javascript
Javascript 设计模式(二) 闭包
2010/05/26 Javascript
jQuery UI Datepicker length为空或不是对象错误的解决方法
2010/12/19 Javascript
原生js ActiveXObject获取execl里面的值
2013/11/01 Javascript
JS父页面与子页面相互传值方法
2014/03/05 Javascript
jQuery切换网页皮肤并保存到Cookie示例代码
2014/06/16 Javascript
HTML5使用DeviceOrientation实现摇一摇功能
2015/06/05 Javascript
基于javascript实现彩票随机数生成(简单版)
2020/04/17 Javascript
json的使用小结
2016/06/08 Javascript
js编写一个简单的产品放大效果代码
2016/06/27 Javascript
全面解析node 表单的图片上传
2016/11/21 Javascript
JavaScript实现星星等级评价功能
2017/03/22 Javascript
angular+webpack2实战例子
2017/05/23 Javascript
微信小程序tabBar用法实例详解
2017/12/04 Javascript
Node.js动手撸一个静态资源服务器的方法
2019/03/09 Javascript
浅析webpack-bundle-analyzer在vue-cli3中的使用
2019/10/23 Javascript
JS禁用右键、禁用Ctrl+u、禁用Ctrl+s、禁用F12的实现代码
2020/12/01 Javascript
JS+CSS实现过渡特效
2021/01/02 Javascript
js基于canvas实现时钟组件
2021/02/07 Javascript
[52:52]完美世界DOTA2联赛PWL S3 LBZS vs access 第一场 12.10
2020/12/13 DOTA
python函数局部变量用法实例分析
2015/08/04 Python
对Python 语音识别框架详解
2018/12/24 Python
pytorch nn.Conv2d()中的padding以及输出大小方式
2020/01/10 Python
python:批量统计xml中各类目标的数量案例
2020/03/10 Python
python中scipy.stats产生随机数实例讲解
2021/02/19 Python
CSS3 实现穿梭星空动画
2020/11/13 HTML / CSS
在HTML5中使用MathML数学公式的简单讲解
2016/02/19 HTML / CSS
科颜氏英国官网:Kiehl’s英国
2019/11/20 全球购物
Athleta官网:购买女士瑜伽服、技术运动服和休闲运动服
2020/11/12 全球购物
介绍JAVA 中的Collection FrameWork(及如何写自己的数据结构)
2014/10/31 面试题
材料会计岗位职责
2014/03/06 职场文书
演讲比赛策划方案
2014/06/11 职场文书
老公给老婆的检讨书(精华篇)
2014/10/18 职场文书
python自动化测试之Selenium详解
2022/03/13 Python