问题描述:现在有一个torch的数据类型,例如一个(3,512,384)的张量,我们如果想要使用cv2.imwrite()函数来将它写入文件。
首先需要在头文件中导入cv2这个库,即import cv2
然后我们需要对torch类型转换为np类型,并且注意要改变维度为(512,384,3),这样才能作为cv2.imwrite()函数的传入参数
最后使用cv2.imwrite()函数传参即可,该函数有三个参数,我们一般使用前两个(第一个是图片要写入的地址,第二个是对象,例如cv2.imwrite("./gen_image.jpg",image)就是将图像对象image写入当下文件夹的gen_image.jpg中),第三个参数和写入精度有关系,我们一般用不到那个。
# image是一个尺寸为(3,512,384)的张量
image_array = np.transpose(image.numpy(), (1, 2, 0))
print(image_array)
cv2.imwrite("/home/image.png", image_array)
另外,关于写入图片为黑色的问题,参考一位大佬的回答:
一般而言是写入的图像归一化到(0,1)区间内了,只需要*255,将其转换到(0,255)就可以正常的可视化了!
代码如下:
# image是一个尺寸为(3,512,384)的张量
image_array = np.transpose(image.numpy(), (1, 2, 0))
print(image_array)
cv2.imwrite("/home/image.png", image_array * 255)