python读取并可视化npy格式的深度图文件以及将其保存为jpg图片的方法
npy文件是无法直接打开的,它里面包含的是一个矩阵格式的数据,可以用于存储图像。为了对其进行可视化,需要将其转换为图像。这里需要用到numpy包以及matplotlib包,没有的话就pip install一下吧。现进入包含有npy文件的目录(我的该目录下有一个名为0000.npy的文件),然后打开一个终端,执行python进入pythn命令行模式,依次输入如下代码即可:import numpy
·
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写出深度图
更多推荐
已为社区贡献20条内容
所有评论(0)