AI读图片问题和多通道问题

numpy 和 opencv

image.io 是RGB格式 而opencv是BGR模式

# opencv转imageio
cv_img = v2.cvtColor(image_io_img , cv2.COLOR_RGB2BGR)
image_io_img = v2.cvtColor(cv_img , cv2.COLOR_BGR2RGB)

# opencv转PIL
pil_img = Image.fromarray(cv2.cvtColor(cv_img, cv2.COLOR_BGR2RGB))
#PIL.Image转opencv
cv_img = cv2.cvtColor(np.asarray(pil_img), cv2.COLOR_RGB2BGR)

imageio 修改

imageio的新版本出来了,
from scipy.misc import imread, imresize,这个面的scipy.misc 用不成了,使用imageio替代
新版本的imageio 读文件需要加上v2 或者v3 版本, 可以替代以前的imread

import imageio
im = imageio.v3.imread(path)  # read a standard image

读写视频文件

import imageio
reader = imageio.get_reader('imageio:cockatoo.mp4')
for i, im in enumerate(reader):
    print('Mean of frame %i is %1.1f' % (i, im.mean()))
#写入灰度图
imageio.imwrite('gray.jpg', im[:, :, 0])

多通道问题

无论是jpg还是png图片一般来说至少三个通道,但是有的是四通道,要一致还是要写的代码的
需要判断一下是三通道的图片还是四通道的图片,下面是一段转到torch 张量的开始到结束

#img = imread(image_path)钱波修改
    img = imageio.v3.imread(image_path)
    if len(img.shape) == 2:
        img = img[:, :, np.newaxis]
        img = np.concatenate([img, img, img], axis=2)
    if img.shape[2] == 4:
        img = Image.open(image_path).convert('RGB')
        img = np.array(img.resize((256,256)))    
        #img = img[:3]
    else:
        #img = imresize(img, (256, 256))
        img = np.array(Image.fromarray(img).resize((256,256)))
    img = img.transpose(2, 0, 1)
    img = img / 255.
    img = torch.FloatTensor(img).to(device)
    normalize = transforms.Normalize(mean=[0.485, 0.456, 0.406],
                                     std=[0.229, 0.224, 0.225])
    transform = transforms.Compose([normalize])
    image = transform(img)  # (3, 256, 256)

    # Encode
    image = image.unsqueeze(0)  # (1, 3, 25)

你可能感兴趣的:(人工智能,python,深度学习,人工智能,多通道,python)