• python中图片处理库Image,transforms,cv2,matplotlib的图片矩阵尺寸变化


    总结:原图是(h=1160,w=720,c=3)

    (from torchvision import transforms as T)

    读取库属性尺寸数据
    img = Image.open()img.size(720, 1160)
    img.resizeimg.resize((512,256)).size(512, 256)
    T.Resize()T.Resize((400,400))(img).size(400, 400)
    np.array(img).shape(1160, 720, 3)
    T.ToTensor()T.ToTensor()(img).size()torch.Size([3, 1160, 720])

    需要注意:T.ToTensor(),T.Resize()的参数不同,Resize的参数是一个尺寸元组且img必须是Image读取的图片;ToTensor的img可以是一个np的数组或Image的图片。ToTensor的返回对象有**.size()方法**,而Resize()的返回值是**.size属性**

    torchvision import transforms as T 对图片的处理

    方法作用例子
    T.Compose()将T的多个操作按顺序执行T.Compose([T.Resize((256, 512)), T.ToTensor( )])
    T.Resize()只修改图片尺寸,不修改通道顺序T.Resize((256, 512))(Image_img)注:img should be PIL Image.
    T.ToTensor( )将hwc数据转换为tensor类型,会修改通道成chwT.ToTensor( )(Image_img)

    Image的图片读取尺寸格式

    Image读取图,size属性是

    import numpy as np
    import matplotlib.pyplot as plt
    from PIL import Image
    
    img = Image.open('4.jpg')  # 原始图片尺寸h=1160,w=720,c=3
    print('Image对象的size:',img.size,)  #Image对象的size: (720, 1160)
    img_np = np.array(img)
    # Image对象转换为np数组后的shape: (1160, 720, 3)
    print('Image对象转换为np数组后的shape:',np.array(img).shape)
    img_resize = img.resize((512,256))
    print('img_resize:',img_resize.size)
    
    transform_x = T.Compose([T.ToTensor( )])
    img_transform = T.ToTensor()(img) #transform_x(img)
    print('img_transform:',img_transform.size())  #torch.Size([3, 256, 512])
    print('np_transform:',np.array(img_transform).shape) # np_transform: (3, 256, 512)
    
    print(T.Resize((256, 512))(img).size) #(512, 256)
    print(np.array(T.Resize((256, 512))(img)).shape) #(256, 512, 3)
    print(np.array(T.ToTensor()(T.Resize((256, 512))(img))).shape)  #(3, 256, 512)
    
    plt.figure()
    plt.subplot(1,2,1)
    plt.title('img')
    plt.imshow(img)
    
    plt.subplot(1,2,2)
    plt.title('img_np')
    plt.imshow(img_np)
    
    plt.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    matplotlib读取显示

    import matplotlib.pyplot as plt
    import matplotlib.image as Img
    
    img  = Img.imread('4.jpg')
    print(img.shape) # (1160, 720, 3)
    plt.imshow(img)
    plt.colorbar()
    plt.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    cv2读取图片

    import cv2
    img = cv2.imread('4.jpg')
    print(img.shape)   # (1160, 720, 3)
    cv2.imshow('img',img)
    cv2.waitKey(0)
    
    • 1
    • 2
    • 3
    • 4
    • 5
  • 相关阅读:
    ubuntu(20.04)下截图贴图软件——flameshot(带设快捷键)
    C++类型推导
    6.filters滤波
    IIS 日志分析工具LogParser
    向量数据库库Milvus Cloud2.3 运维可靠,秒级故障恢复
    力扣------路径总和 III
    智能网联驾驶测试与评价工业和信息化部重点实验室“车载智能计算基础平台参考架构2.0专家研讨会”圆满结束
    34. 在排序数组中查找元素的第一个和最后一个位置
    PCL 生成球形点云
    树状数组维护权值线段树
  • 原文地址:https://blog.csdn.net/weixin_43794311/article/details/125422330