张芷铭的个人博客

Python 读取图片主要有 4 种方式:Pillow(通用)、OpenCV(CV 任务)、matplotlib(可视化)、torchvision(深度学习)。

Pillow(推荐)

1
2
3
4
5
6
from PIL import Image
import numpy as np

img = Image.open("image.jpg")       # PIL.Image 对象
img = img.resize((640, 640))        # 调整尺寸
arr = np.array(img)                 # 转 numpy(RGB,HWC)
  • 通用性强,支持多种格式
  • 返回 PIL.Image,与 numpy/PyTorch 兼容

OpenCV(CV 任务)

1
2
3
4
5
6
import cv2

img = cv2.imread("image.jpg")       # BGR,numpy 数组
img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
img_resized = cv2.resize(img, (640, 640))
cv2.imwrite("out.jpg", img)         # 保存(需 BGR)
  • 返回 numpy 数组(uint8,0-255)
  • 默认 BGR 通道,需转换

matplotlib(可视化)

1
2
3
4
5
6
import matplotlib.pyplot as plt

img = plt.imread("image.jpg")       # RGB,numpy 数组
plt.imshow(img)
plt.axis("off")
plt.show()
  • 读取和显示一体化
  • 默认 RGB 格式

torchvision(深度学习)

1
2
3
4
5
6
from torchvision.io import read_image
from torchvision.transforms import Resize

img = read_image("image.jpg")       # CHW,torch.uint8
img = Resize((640, 640))(img)       # 调整尺寸
img = img.float() / 255.0           # 归一化
  • 直接返回 Tensor(CHW)
  • 适合 PyTorch 模型输入

格式对比

通道顺序形状返回类型
PillowRGBHWCPIL.Image
OpenCVBGRHWCnumpy
matplotlibRGBHWCnumpy
torchvisionRGBCHWTensor

Comments