Python绘制场景热力图实战:基于行人检测坐标的可视化叠加

Mia
Mia
发布时间:2026-10-14| 4人浏览过
原创

本文介绍如何在Python中利用行人检测得到的中心坐标绘制场景热力图。通过获取Bounding Box中心点并传入HeatMap库,可生成热力层。代码演示了如何将热力图以指定透明度加权叠加至原图,并通过调整半径参数控制可视化效果,适用于人群密集度等场景分析。

Python热力图绘制原理与流程

在进行如人群密集度等数据的可视化展示时,热力图是一种直观且常用的手段。在Python生态中,实现热力图的绘制相对便捷。

接下来,将以识别图片中的行人并据此绘制热力图为例,详细讲解具体操作流程。

  • 第一步:对图像中的人员进行识别,获取每个检测目标的Bounding Box中心坐标。识别算法可选用多种方案,坐标数据亦可手动定义。
  • 第二步:将所有获取到的中心坐标存入一个列表类型的变量data中,格式示例为data = [[x1,y1], [x2,y2], …]。
  • 第三步:基于坐标数据绘制热力图,并将其以加权方式叠加到原始图像上,形成最终可视化结果。

首先需要导入必要的依赖包:

环境依赖与核心代码实现


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参数,即可调整热力点的半径大小。

以上即为Python绘制场景热力图的完整示例,如需了解更多Python热力图绘制相关内容,欢迎查阅本站其他技术文章。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。