簡體   English   中英

使用Python繪制HeatMap

[英]Plotting HeatMap using Python

我正在研究對象檢測的本地化問題。 我得到了不同視頻幀中矩形框的坐標。 所以我的numpy數組看起來像這樣

[[403 172 614 326]
[345153652383]
[345172537326]
...
[134115326307]
[153 57 403 307]
[191 19479230]

在此,每列中的4個值分別為x1,y1,x2,y2,它們基本上是定義為的矩形框的坐標-

    __________________(x2,y2)
    |                |
    |                |
    |                |
    _(x1,y1)__________

(x1,y1)和(x2,y2)是如圖所示的矩形本地化框的坐標。
幀大小(從視頻中獲取)是恆定的。 是480 * 850。
我需要為這些值繪制熱圖,說更多的像素所占據的像素數。 盒子需要更明亮。

樣品熱圖
基本上,這不是正常的熱圖(基於2d數組的值對其進行繪圖)。
誰能建議如何以這種方式獲取熱圖?

如果我理解正確,則您有一個長度為n的數組M M每個元素(例如第一個元素M[0] )是一個四元素數組[x_1, y_1, x_2, y_2] ,在更大的空間中定義了一個盒子。 然后,這些盒子可以重疊,並且您需要由所有這些盒子的總組合/分層產生的熱圖。

我將從生成一些隨機數據開始:

import numpy as np
M = np.random.randint(0, high=500, size=(50,4))

然后,我們初始化一個空矩陣(我在這里假設生成的熱圖基於您提供的樣本數據的尺寸為500x500,但您可以適當調整):

R = np.zeros((500,500))

然后,對於數組輸入數組中的每個條目,我們通過在正方形尺寸所覆蓋的每個“像素”上加1來填充相應的正方形:

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

最后,我們可以繪制結果熱圖:

import matplotlib.pyplot as plt
import seaborn as sns

sns.heatmap(R)
plt.show()

根據需要,這將為我們提供帶有重疊框的熱圖: 產生的熱圖

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM