| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| import os |
| import shutil |
| import seaborn as sns |
| import matplotlib.pyplot as plt |
| import cv2 |
| import numpy as np |
|
|
| def SaveHeatmap(heatmaps, path, row=-1, dpi=72): |
| """ |
| The input tensor must be B X 1 X H X W |
| """ |
| batch_size = heatmaps.shape[0] |
| temp_path = ".temp/" |
| if not os.path.exists(temp_path): |
| os.makedirs(temp_path) |
| final_img = None |
| if row < 1: |
| col = batch_size |
| row = 1 |
| else: |
| col = batch_size // row |
| if row * col <batch_size: |
| col +=1 |
| |
| row_i = 0 |
| col_i = 0 |
| |
| for i in range(batch_size): |
| img_path = os.path.join(temp_path,'temp_batch_{}.png'.format(i)) |
| sns.heatmap(heatmaps[i,0,:,:],vmin=0,vmax=heatmaps[i,0,:,:].max(),cbar=False) |
| plt.savefig(img_path, dpi=dpi, bbox_inches = 'tight', pad_inches = 0) |
| img = cv2.imread(img_path) |
| if i == 0: |
| H,W,C = img.shape |
| final_img = np.zeros((H*row,W*col,C)) |
| final_img[H*row_i:H*(row_i+1),W*col_i:W*(col_i+1),:] = img |
| col_i += 1 |
| if col_i >= col: |
| col_i = 0 |
| row_i += 1 |
| cv2.imwrite(path,final_img) |
|
|
| if __name__ == "__main__": |
| random_map = np.random.randn(16,1,10,10) |
| SaveHeatmap(random_map,"./wocao.png",1) |
|
|