python 绘制场景热力图的示例
作者:陶婷 时间:2022-01-22 07:03:21
我们在做诸如人群密集度等可视化的时候,可能会考虑使用热力图,在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) # 将热度图覆盖到原图
网站上随意找一张图片进行实验:
原图如下:
结果如下:
可视化效果可以调节,如:通过调节hm.heatmap(base=background, r = 100)中的r即可调节热力点的半径大小。
来源:https://www.cnblogs.com/taotingz/p/11309333.html
标签:python,绘图,热力图,场景
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
MySQL 集群配置
2009-04-20 14:15:00
Oracle数据表分区的策略
2010-07-28 12:59:00
Python技能树共建之python urllib 模块
2023-02-07 04:02:40
Persits AspJpeg组件图片水印\\缩略图\\图片合并\\图片切割\\实例教程
2008-12-14 10:36:00
微软建议的ASP性能优化28条守则(4)
2008-02-26 17:57:00
Go单元测试对GORM进行Mock测试
2023-07-20 17:38:53
python tensorflow学习之识别单张图片的实现的示例
2023-06-30 21:11:32
![](https://img.aspxhome.com/file/2023/0/60520_0s.png)
PyCharm-错误-找不到指定文件python.exe的解决方法
2022-04-20 00:48:10
![](https://img.aspxhome.com/file/2023/3/75293_0s.jpg)
38个Asp内置函数介绍
2008-11-27 16:25:00
深入理解ASP中FSO的神奇功能
2007-09-18 12:22:00
PHP自动生成缩略图函数的源码示例
2023-06-26 19:13:37
XML 在使用中产生的二十个热点问题
2008-05-29 11:07:00
计划备份mysql数据库
2009-03-09 14:34:00
PHP设计模式 注册表模式(多个类的注册)
2023-11-20 06:45:13
Python的randrange()方法使用教程
2021-02-08 10:22:22
解析python 中/ 和 % 和 //(地板除)
2021-04-19 02:05:14
有关于IE8 Beta 1两个提醒
2008-05-15 12:32:00
6个asp判断函数使用方法介绍
2007-09-24 13:10:00
Bootstrap Paginator分页插件使用方法详解
2023-09-05 23:08:42
![](https://img.aspxhome.com/file/2023/4/56294_0s.png)
Python之web模板应用
2021-06-27 10:13:47