图片路径:
img_path = ‘./datasets/proposal-flow-pascal/PF-dataset-PASCAL/JPEGImages/2009_003820.jpg’
读取图片的2种不同方法:
from PIL import Image
image = Image.open(img_path)
from skimage import io
image = io.imread(img_path)
这2种方法读取的图像的shape是一样的,都是numpy数组类型:(228, 300, 3)
对numpy数组类型的图像进行处理:
对图像的维度进行顺序调整:
source_image = source_image.transpose((2,0,1))
图像的shape变为:(3, 228, 300)
对图像进行升维
source_image = np.expand_dims(source_image,0)
图像的shape变为:(1, 3, 228, 300)
对图片进行降维
source_image = source_image[0]
图像的shape变为:(3, 228, 300)
可以将图片从numpy数组转为Torch张量:
source_image = torch.Tensor(source_image)
图像的shape变为:torch.Size([3, 228, 300])
对Torch张量类型的图像进行处理:
对图像(Torch张量)进行升维
source_image = np.expand_dims(source_image,0)
图像的shape变为:(1, 3, 228, 300)
注意,使用np.expand_dims对Torch张量进行升维之后,类型会自动变成numpy数组
type(source_image) # 类型为numpy.ndarray
source_image = torch.Tensor(source_image) # 将图片从numpy数组转为Torch张量
图像的shape变为:torch.Size([1, 3, 228, 300])
对图像(Torch张量)进行降维:
source_image = source_image[0]
图像的shape变为:torch.Size([3, 228, 300])
对图像(Torch张量)的维度进行顺序调整:
source_image = source_image.permute(1, 2, 0)
图像的shape变为:torch.Size([228, 300, 3])
注意:
numpy数组调整顺序用的是.transpose((x,x,x))
Torch张量调整顺序用的是.permute(x, x, x)
可以将图片从Torch张量转为numpy数组:
source_image = source_image.numpy()
将张量转为(w, h, d)形式的numpy数组后就可以将图像进行显示输出
plt.imshow(source_image)
plt.show()
版权声明:本文为weixin_44828787原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。