RGB多为使用PIL读入图片,BGR多为cv2读入的图片
1、cv2的imshow读取方式同imread的色彩通道顺序,默认BGR
2、PIL读入方式为RGB,plt显示图片默认为RGB
3、PIL、cv(numpy)、tensor之间的转换:
PIL_numpy:
img_pIL=Image.open('image.png')
img_pIL=np.asarray(img_pIL)
cv2.imshow('cv2Image2BGR',cv2.cvtColor(img_pIL,cv2.COLOR_RGB2BGR))
PIL_tensor:
from torchvision import transforms
transform=transforms.Compose([transforms.ToTensor()])
transform(img_pIL)
cv(numpy)_PIL:
image = Image.fromarray(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
image.show()
cv(numpy)_Tensor:
image=cv2.imread('image.png')
from torchvision import transforms
transform=transforms.Compose([transforms.ToTensor()])
transform(image)
或者:
torch.from_numpy(image)
Tensor_PIL:
unloader = transforms.ToPILImage()
img_PilT =unloader(img_Tensor)
Tensor_numpy:
tensor.numpy()/tensor.cpu().numpy()
注意:
1、为显示正常色彩的图片:plt、Image.show接收的是RGB的读入方式;cv2.imshow接收的是BGR的读入方式。注意转换
2、在自己从头开始训练时无所谓读入的是RGB还是BGR,但是如果需要使用别人的预训练模型,需要注意人家在训练时候使用的图片格式是RGB还是BGR,老的模型一般是BGR
的占比多