赞
踩
npy文件是无法直接打开的,它里面包含的是一个矩阵格式的数据,可以用于存储图像。为了对其进行可视化,需要将其转换为图像。这里需要用到numpy包以及matplotlib包,没有的话就pip install一下吧。现进入包含有npy文件的目录(我的该目录下有一个名为0000.npy的文件),然后打开一个终端,执行python
进入python命令行模式,依次输入如下代码即可:
import numpy as np
import matplotlib.pyplot as plt
depthmap = np.load('0000.npy') #使用numpy载入npy文件
plt.imshow(depthmap) #执行这一行后并不会立即看到图像,这一行更像是将depthmap载入到plt里
# plt.colorbar() #添加colorbar
plt.savefig('depthmap.jpg') #执行后可以将文件保存为jpg格式图像,可以双击直接查看。也可以不执行这一行,直接执行下一行命令进行可视化。但是如果要使用命令行将其保存,则需要将这行代码置于下一行代码之前,不然保存的图像是空白的
plt.show() #在线显示图像
#若要将图像存为灰度图,可以执行如下两行代码
import scipy.misc
scipy.misc.imsave("depth.png", depthmap)
下面再贴一个将维度为[m,n]的深度图tensor进行可视化的代码,可以方便地应用于深度学习中产生的深度图上。
import torch import cv2 # 该函数将深度值进行映射,生成带颜色的深度图 def visualize_scalars(scalar_tensor: torch.Tensor) -> np.ndarray: to_use = scalar_tensor.view(-1) while to_use.shape[0] > 2 ** 24: to_use = to_use[::2] with torch.inference_mode(False): mi = torch.quantile(to_use, 0.05) ma = torch.quantile(to_use, 0.95) scalar_tensor = (scalar_tensor - mi) / max(ma - mi, 1e-8) # normalize to 0~1 scalar_tensor = scalar_tensor.clamp_(0, 1) scalar_tensor = ((1 - scalar_tensor) * 255).byte().numpy() # inverse heatmap return cv2.cvtColor(cv2.applyColorMap(scalar_tensor, cv2.COLORMAP_INFERNO), cv2.COLOR_BGR2RGB) depthimg = torch.ones(height,width) # 初始化一张height,width大小的图像(这里是全为1的tensor) ######################### # 这里可以对depthimg进行赋值 ######################### scalarimg = visualize_scalars(depthimg) # 进行scalar调节 cv2.imwrite(f'../../outdata/depthmap/depth.jpg', scalarimg) # cv2写出深度图
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。