用python程序,把现成的热力图识别转化为数据保存在excel表格中,热力值按冷暖色变化取值,然后通过保存在EXCEL中的数据,能够重新绘制出热力图。希望给出两份代码,一份能把现成的热力图转化为数据保存EXCEL中,一份能通过上面保存的EXCEL数据重新绘制成热力图,希望不调用opencv库
时间: 2024-03-27 08:38:52 浏览: 118
python绘制热力图利用python中的matplotlib中的pyplot包绘制二维热力图
由于您没有提供现成的热力图文件,我将以一张示例图片作为示范进行代码编写。同时,本回答将使用Python的PIL库进行图片处理和Matplotlib库进行热力图绘制。
1. 把现成的热力图转化为数据保存EXCEL中
示例代码:
```python
from PIL import Image
import openpyxl
# 打开热力图图片
img = Image.open('heatmap.jpg')
# 获取图片的宽度和高度
w, h = img.size
# 新建一个Excel文件
wb = openpyxl.Workbook()
ws = wb.active
# 遍历图片的每个像素,把像素值写入Excel文件中
for i in range(w):
for j in range(h):
# 获取像素的RGB值
r, g, b = img.getpixel((i, j))
# 计算像素的灰度值
gray = int(0.2989 * r + 0.5870 * g + 0.1140 * b)
# 把像素的灰度值写入Excel文件中
ws.cell(row=j+1, column=i+1, value=gray)
# 保存Excel文件
wb.save('heatmap.xlsx')
```
说明:
- 代码中使用PIL库打开热力图图片,并获取图片的宽度和高度。
- 代码使用openpyxl库新建一个Excel文件,并获取Excel文件的活动工作表。
- 代码遍历图片的每个像素,计算像素的灰度值,并把灰度值写入Excel文件中对应的单元格中。
- 最后,保存Excel文件。
2. 通过上面保存的EXCEL数据重新绘制成热力图
示例代码:
```python
import openpyxl
import numpy as np
import matplotlib.pyplot as plt
# 打开Excel文件
wb = openpyxl.load_workbook('heatmap.xlsx')
ws = wb.active
# 获取Excel文件中的数据
data = []
for row in ws.rows:
data.append([cell.value for cell in row])
# 把数据转化为numpy数组
data = np.asarray(data)
# 绘制热力图
plt.imshow(data, cmap='coolwarm', interpolation='nearest')
plt.colorbar()
# 设置坐标轴
plt.xticks([])
plt.yticks([])
# 显示图像
plt.show()
```
说明:
- 代码中使用openpyxl库打开保存热力图数据的Excel文件,并获取Excel文件的活动工作表。
- 代码遍历Excel文件中的每个单元格,把单元格的值保存到一个二维列表中。
- 代码使用numpy库把数据转化为numpy数组。
- 代码使用Matplotlib库绘制热力图,并设置坐标轴和颜色条,最后显示图像。
阅读全文