我想将张量数据转换为numpy数据并通过Opencv保存,但是opencv要求数据维必须像这样的样式[1,something,something,something],但是我的张量数据是一个混合数据,它大小为[30,某物,某物,某物],如何在pytorch中修改数据维度。
PS,pytorch中有什么功能可以将数据保存为二进制图片?我使用“ save_image”命令将张量数据保存到所有数字均为1或0的图片中,但图片显示仍为灰色样式。也许还有其他方法可以将张量数据保存为二进制图片,请告诉我。
def save_image_tensor2cv2(input_tensor, filename):
assert (len(input_tensor.shape) == 4) and input_tensor.shape[0] == 1)
input_tensor = input_tensor.clone().detach()
input_tensor = input_tensor.to(torch.device('cpu'))
input_tensor = input_tensor.squeeze()
input_tensor = input_tensor.mul_(255).add_(0.5).clamp_(0, 255).permute(1, 2, 0).type(torch.uint8).numpy()
cv2.imwrite(filename, input_tensor)
答案 0 :(得分:0)
batch = next(iter(dataloader_test))
batch.shape
torch.Size([4, 3, 160, 160])
np.transpose(batch.numpy(), (0,2,3,1)).shape
(4, 160, 160, 3)
image = np.transpose(batch.numpy(), (0,2,3,1))
cv2.imwrite("image.png", image[0])
您可能需要先对数据进行非规范化,然后再保存。