python绘制人像热力图
时间: 2025-06-20 16:44:31 浏览: 17
### 如何使用 Python 绘制人像热力图
为了绘制高质量的人像热力图,可以采用多种方法和技术栈组合来完成这一目标。下面介绍一种基于 OpenCV 和 `pyheatmap` 的解决方案。
#### 方法概述
通过读取图像文件并转换成 NumPy 数组形式,利用 OpenCV 进行人脸检测获取人脸位置信息;随后根据这些坐标点生成热度分布数据集,并最终调用 `HeatMap` 类创建热力图对象进行渲染展示。
#### 所需库安装与导入
确保已经安装了所需的第三方模块,可以通过 pip 安装命令轻松获得它们:
```bash
pip install opencv-python-headless numpy pillow pyheatmap matplotlib
```
接着,在脚本顶部加入如下语句加载所需功能组件[^1]:
```python
import cv2
import numpy as np
from PIL import Image
from pyheatmap.heatmap import HeatMap
import matplotlib.pyplot as plt
```
#### 实现过程详解
##### 加载图片资源
定义函数用于打开指定路径下的单张或多张照片作为输入素材源。
```python
def load_images_from_folder(folder_path):
images = []
for filename in os.listdir(folder_path):
img = cv2.imread(os.path.join(folder_path,filename))
if img is not None:
gray_image = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray_image, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30), flags=cv2.CASCADE_SCALE_IMAGE)
points = [(x+w//2,y+h//2) for (x,y,w,h) in faces]
heatmap_data.append(points)
images.append((img,points))
return images
```
此处假设已存在预训练好的 Haar 级联分类器变量 `face_cascade` 来定位面部特征区域。对于每一张符合条件的照片都会被转化为灰度模式以便提高识别效率,并提取其中心点构成列表存储于全局变量 `heatmap_data` 中待后续处理。
##### 创建热力图表征
当所有样本都经过上述流程后,则可着手准备构建实际可视化的部分了。
```python
if __name__ == "__main__":
folder_path = './faces/' # 图片所在目录
heatmap_data = []
images_with_points = load_images_from_folder(folder_path)
hm = HeatMap(heatmap_data)
fig = plt.figure(figsize=(8,6))
ax = fig.add_subplot(111)
hm.heatmap(ax=ax,title="Face Heatmap",scheme='red')
plt.show()
```
这段代码片段展示了如何实例化 `HeatMap` 对象并将之前收集到的数据传递给它,同时设置了绘图窗口大小和其他样式属性以增强视觉效果。最后调用了 Matplotlib 提供的功能显示结果图形。
阅读全文
相关推荐













