常见的六种方式读取和显示图片
使用 Opencv
import cv2
# 读取图片 (默认 BGR 格式)
img = cv2.imread('./flowers.jpg') # 返回 numpy.ndarray
img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # 转为 RGB
# 显示图片
cv2.imshow('Image', img) #默认使用 BGR 色彩空间来显示
cv2.waitKey(0) # 等待按键关闭窗口
cv2.destroyAllWindows()
使用 Pillow (PIL.Image)
from PIL import Image
# 打开图片
img = Image.open('./flowers.jpg') # 返回 PIL.Image 对象 # 默认 RGB 格式
#显示图片
img.show()
# 可转为 numpy.ndarray
import numpy as np
img_array = np.array(img) # RGB 格式
使用skimage
from skimage import io
# 读取图片
img = io.imread('./flowers.jpg') # 自动转换为 RGB numpy.ndarray
# 显示图片
io.imshow(img)
io.show()
使用Numpy+Matplotlib
import matplotlib.pyplot as plt
# 使用 OpenCV 读取图片
import cv2
img = cv2.imread('./flowers.jpg')
img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # numpy.ndarray格式
# 显示图片
plt.imshow(img_rgb)
plt.axis('off') # 不显示坐标轴
plt.show()
使用TensorFlow
import tensorflow as tf
# 加载图片为张量
img = tf.keras.preprocessing.image.load_img('./flowers.jpg') # 返回 PIL.Image 对象
img_array = tf.keras.preprocessing.image.img_to_array(img) # 转为 numpy.ndarray
#显示
import matplotlib.pyplot as plt
plt.imshow(img)
plt.axis('off')
plt.show()
使用PyTorch
from PIL import Image
import torchvision.transforms as transforms
# 打开图片
img = Image.open('./flowers.jpg')
# 转为张量
transform = transforms.ToTensor()
img_tensor = transform(img)
# 显示张量 (需转为 NumPy)
import matplotlib.pyplot as plt
plt.imshow(img_tensor.permute(1, 2, 0)) # (C, H, W) -> (H, W, C)
plt.axis('off')
plt.show()