-
OpenCV (BGR) -> PIL (RGB):
- 使用
cv2.cvtColor()
将BGR转换为RGB。 - 使用
Image.fromarray()
将NumPy数组转换为PIL图像。
- 使用
-
PIL (RGB) -> PyTorch (CHW):
- 使用
transforms.ToTensor()
将PIL图像转换为PyTorch张量。
- 使用
-
PyTorch (CHW) -> PIL (RGB):
- 使用
transforms.ToPILImage()
将PyTorch张量转换为PIL图像。
- 使用
-
PIL (RGB) -> OpenCV (BGR):
- 使用
cv2.cvtColor()
将RGB转换为BGR。
- 使用
import cv2
from PIL import Image
import numpy as np
import torch
import torchvision.transforms as transforms
# OpenCV读取图像
cv_image = cv2.imread('path_to_image.jpg')
print(f'OpenCV图像格式 (BGR): {cv_image.shape}') # (H, W, C)
# OpenCV的BGR格式转换为RGB格式
cv_image_rgb = cv2.cvtColor(cv_image, cv2.COLOR_BGR2RGB)
print(f'OpenCV图像格式 (RGB): {cv_image_rgb.shape}') # (H, W, C)
# 将OpenCV图像转换为PIL图像
pil_image = Image.fromarray(cv_image_rgb)
print(f'PIL图像格式: {np.array(pil_image).shape}') # (H, W, C)
# 将PIL图像转换为PyTorch张量
transform = transforms.ToTensor()
tensor = transform(pil_image)
print(f'PyTorch张量格式: {tensor.shape}') # (C, H, W)
# 将PyTorch张量转换回PIL图像
pil_image_from_tensor = transforms.ToPILImage()(tensor)
print(f'PIL图像格式 (从张量转换): {np.array(pil_image_from_tensor).shape}') # (H, W, C)
# 将PIL图像转换为OpenCV格式 (BGR)
cv_image_from_pil = cv2.cvtColor(np.array(pil_image_from_tensor), cv2.COLOR_RGB2BGR)
print(f'OpenCV图像格式 (从PIL转换): {cv_image_from_pil.shape}') # (H, W, C)