用python把热力图转化为数据保存在excel表格中,需要有坐标和热力值,通过保存在EXCEL中的数据,能够恢复出热力图。希望给出两份代码,一份能把现成的热力图转化为数据保存EXCEL中,一份能通过上面保存的EXCEL数据重新绘制成热力图
时间: 2024-03-27 22:35:12 浏览: 174
python绘制热力图利用python中的matplotlib中的pyplot包绘制二维热力图
好的,下面是两份代码。
1. 将现成的热力图转化为数据保存在Excel表格中
这里我们使用Python中的Pandas库和OpenCV库来实现。首先,我们需要使用OpenCV库读取热力图并获取它的像素值,然后将像素值转化为坐标和热力值,并存储在Excel中。代码如下:
```python
import cv2
import pandas as pd
# 读取热力图
heatmap = cv2.imread('heatmap.png')
# 获取像素值
gray_heatmap = cv2.cvtColor(heatmap, cv2.COLOR_BGR2GRAY)
_, thresholded_heatmap = cv2.threshold(gray_heatmap, 127, 255, cv2.THRESH_BINARY)
_, contours, _ = cv2.findContours(thresholded_heatmap, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
coordinates = []
for contour in contours:
for point in contour:
x, y = point[0]
value = gray_heatmap[y][x]
coordinates.append([x, y, value])
# 存储数据到Excel中
df = pd.DataFrame(coordinates, columns=['x', 'y', 'value'])
df.to_excel('heatmap_data.xlsx', index=False)
```
这段代码中,`heatmap.png`是我们需要转化为数据的热力图。我们使用OpenCV库中的`imread()`函数读取热力图,并使用`cvtColor()`函数将图像转化为灰度图像。然后,我们使用阈值技术将灰度图像转化为二值图像,并使用`findContours()`函数获取轮廓。接着,我们遍历轮廓中的点,获取每个点的坐标和像素值,并将它们存储在一个列表中。最后,我们将列表转化为DataFrame对象,并使用Pandas库中的`to_excel()`函数将数据保存到Excel中。
2. 使用Excel中的数据重新绘制热力图
这里我们同样使用Python中的Pandas库和OpenCV库来实现。首先,我们需要从Excel中读取数据,然后使用OpenCV库绘制热力图。代码如下:
```python
import pandas as pd
import cv2
# 从Excel中读取数据
df = pd.read_excel('heatmap_data.xlsx')
# 获取坐标和热力值
x = df['x']
y = df['y']
value = df['value']
# 绘制热力图
heatmap_data = 255 * (value / value.max())
heatmap = cv2.merge([heatmap_data, heatmap_data, heatmap_data])
for i in range(len(x)):
cv2.circle(heatmap, (x[i], y[i]), 2, (0, 0, 255), -1)
cv2.imshow('heatmap', heatmap)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
这段代码中,我们使用Pandas库中的`read_excel()`函数从Excel中读取数据。然后,我们将坐标和热力值分别存储在`x`、`y`和`value`三个变量中。接着,我们将热力值转化为灰度值,并使用OpenCV库中的`merge()`函数将灰度值转化为BGR格式。最后,我们遍历坐标和热力值,使用`circle()`函数在热力图上绘制相应的点,并使用`imshow()`函数显示出来。
希望这两份代码能够帮助到你!
阅读全文