首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Python绘制HeatMap

用Python绘制HeatMap
EN

Stack Overflow用户
提问于 2019-06-27 20:07:45
回答 1查看 2K关注 0票数 2

我正在研究一个目标检测的本地化问题。我得到了不同视频帧中矩形盒的坐标。所以我的numpy数组是这样的--

[403 172 614 326

345 153 652 383

345 172 537 326

..。

134 115 326 307

153 57 403 307

191 19 479 230]

这里每个列中的4个值是x1、y1、x2、y2,它们基本上是矩形框的坐标,定义为--

代码语言:javascript
复制
    __________________(x2,y2)
    |                |
    |                |
    |                |
    _(x1,y1)__________

(x1,y1)和(x2,y2)是矩形方框的坐标,如图所示。

帧大小(从视频中获取)是恒定的。是480 * 850。

我需要绘制这些值的热图,表示像素被更多的否定所占据。盒子需要更明亮。

样品热图

基本上,这不是一个正常的热图(根据其值绘制2d数组)。

有人能建议如何以这种方式获取热图吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-27 20:34:24

如果我正确理解,您有一个长度为M的数组nM的每个元素,比如第一个元素M[0],都是一个四元素数组[x_1, y_1, x_2, y_2],它在更大的空间中定义了一个框。然后,这些盒子可以是重叠的,你想要的热量地图,是由所有这些盒子的整体组合/分层。

首先,我将生成一些随机数据:

代码语言:javascript
复制
import numpy as np
M = np.random.randint(0, high=500, size=(50,4))

然后,我们初始化一个空矩阵(这里假设生成的热图具有基于您提供的样本数据的尺寸500x500,但您可以根据需要进行调整):

代码语言:javascript
复制
R = np.zeros((500,500))

然后,对于数组输入数组中的每个条目,我们通过在每个被该方的尺寸覆盖的“像素”中添加1来填充相应的方格:

代码语言:javascript
复制
for row in M:
    x1, y1, x2, y2 = row
    for x in range(x1,x2+1):
        for y in range(y1,y2+1):
            R[x,y] += 1

最后,我们可以绘制最终的热图:

代码语言:javascript
复制
import matplotlib.pyplot as plt
import seaborn as sns

sns.heatmap(R)
plt.show()

这将给我们一个热图与重叠的盒子,如所需:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56797900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档