【pytorch】关于OpenCV和PIL.Image读取图片的区别

首先从pytorch出发,torchvision.transforms()要求传入的图像是PIL.Image格式(通道要求是RGB格式的),另外模型处理输入要转换为[1,channel,H,W];

所以最终导入torchvision.transforms()的图像格式需要转成PIL.Image,且需要在转换后增加batch维度([channel,H,W]变成[1,channel,H,W])


    test_transform=torchvision.transforms.Compose([
        ...
        transforms.ToTensor(),
        ...
    ])

    input_img=test_transform(img_pil).unsqueeze(0)
    pred_logits=model(input_img)

1. PIL.Image

a. 读取图片


    from PIL import Image
    img_pil = Image.open(path)

img_pil为PIL.JpegImagePlugin.JpegImageFile对象,图像形状(维度)是[W,H],通道是RGB
注意:使用numpy库读取格式为(width, height)的pillow的图片后,
数据的格式自动转为(height, width, channels)

b.PIL转OpenCV


    import cv2
    from PIL import Image
    import numpy

    image = Image.open("plane.jpg")
    image.show()
    img = cv2.cvtColor(numpy.asarray(image),cv2.COLOR_RGB2BGR)
    cv2.imshow("OpenCV",img)
    cv2.waitKey()

c.保存图像

注意:当往图片添加中文时,需要使用PIL


    from PIL import ImageFont, ImageDraw

    font = ImageFont.truetype('SimHei.ttf', 32)
    draw = ImageDraw.Draw(img_pil)
    text="我爱学python"
    draw.text((50, 100 + 50 ), text, font=font, fill=(255, 0, 0, 1))

    img_pil.save('output/img_pred.jpg')

2. OpenCV

a. 读取图片


    import cv2
    img_cv2 = cv2.imread(path)

img_cv2为numpy.ndarray格式,是uint8类型,0-255范围,图像形状(维度)是[H,W,C],通道是BGR

b.OpenCV转PIL


    import cv2
    from PIL import Image
    import numpy

    img = cv2.imread("plane.jpg")
    cv2.imshow("OpenCV",img)
    image =Image.fromarray(cv2.cvtColor(img,cv2.COLOR_BGR2RGB))
    image.show()
    cv2.waitKey()

c.保存图像

cv2可以保存英文。


    import cv2

    img_bgr = cv2.imread(img_path)
    text="我爱学python"
    img_bgr = cv2.putText(img_bgr, text, (25, 50 + 40 ), cv2.FONT_HERSHEY_SIMPLEX, 1.25, (0, 0, 255), 3)

    cv2.imwrite('output/img_pred.jpg', img_bgr)

Original: https://blog.csdn.net/cxh21627/article/details/126255953
Author: CoCo_2022
Title: 【pytorch】关于OpenCV和PIL.Image读取图片的区别

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/701834/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球