python读取图像,关于np、cv2、PIL不同图像类型的理解与转换
总的来说就两种图像类型:np.ndarray(简称np图像)、Image.Image(简称为pil图像)
-------读取
读取图像的方法有两种:cv2.imread()、Image.open()
cv2.imread() 读取得到 np.ndarray 类型的图像,BGR通道,(H,W,C)
Image.open() 读取得到 Image.Image 类型的图像,RGB通道,(H,W,C)
-------转换
cv2读取的np图像,用convert()函数转换为RGB模式,再用Image.fromarray()函数转换为pil图像。
PIL读取的pil图像,用np.array()转换为np图像
-------torch张量
np图像与tensor相互转换:
image_torch = torch.from_numpy(image_np).permute(2, 0, 1) NumPy (HWC) → Torch (CHW)
image_np = image_torch.permute(1, 2, 0).cpu().numpy() Torch (CHW) → NumPy (HWC)