0%

图像操作

numpy数组

查看形状

numpy

print(f"before transpose img_f shape is {img_f.shape}")

一般PIL图像都是HWC,一般张量都是CHW,所以用 image = img.permute(2, 0, 1)来调换通道

PIL

print(Image.open(image_path))就可以查看一个图像的基本信息

<PIL.Image.Image image mode=RGB size=320x320 at 0x7FA27DF10910>

张量

张量要求输入是四维,所以如果只有1张图片,要修改

张量与PIL之间转换

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import torch
from PIL import Image

# 加载图片并转换为张量
image = Image.open('/home/ztb/alg_mini/computer_design/sbi数据集/faces/1.png')
transform = torchvision.transforms.ToTensor()
image_tensor = transform(image)

# 添加批量维度并调整通道顺序
image_tensor = image_tensor.unsqueeze(0) # 添加批量维度
image_tensor = image_tensor.permute(0, 2, 3, 1) # 调整通道顺序

# 将图片输入模型进行推理
output = model(image_tensor)

输入模型的张量格式通常是一个四维张量,其形状为 [batch_size, channels, height, width],其中:

  • batch_size 表示每个批次中样本的数量。
  • channels 表示图片的通道数,对于彩色图片通常为3(R、G、B),对于灰度图片通常为1。
  • height 表示图片的高度。
  • width 表示图片的宽度。

这种格式通常称为 CHW 格式,因为通道在前,高度在中间,宽度在最后。

图像值的变换

为什么一会float / 255,一会有int * 255