opencv和numpy以及pillow处理图片时数据各个维度的布局

总结:

opencv读取图片时,读取后转为numpy数组的格式是(height, width, channels).


pillow第三方库读取图片后数据的格式是(width, height).


使用numpy库读取格式为(width, height)的pillow的图片后,
数据的格式自动转为(height, width, channels)


pillow从维度为(height, width, channels)的numpy数据后,
自动将维度调整为(width, height).

代码实验展示:

from PIL import Image
import cv2
import numpy as np


if __name__ == '__main__':

    print()
    print('测试opencv-python读取图片的格式'.center(50,'-'))
    img_cv2 = cv2.imread('bryant.jpg', 1)  # 读取图片文件
    img_cv2 = np.float32(img_cv2) / 255  # 转为float32类型
    print('opencv-python的图片读取格式:(height, width, channels)',img_cv2.shape)  
    # opencv-python的图片读取格式:(height, width, channels) (667, 1000, 3)


    print()
    print('测试Python第三方库Pillow读取图片的格式'.center(50,'-'))
    img_PIL = Image.open("bryant.jpg")
    print(img_PIL.format, img_PIL.size, img_PIL.mode)  # JPEG (1000, 667) RGB
    print('图片的宽度:', img_PIL.width, '图片的高度:', img_PIL.height)  # 图片的宽度: 1000 图片的高度: 667


    print()
    print('测试Python第三方库NumPy处理PIL图片的方式'.center(50,'-'))
    imgNumPy_from_PIL = np.array(img_PIL)
    print('imgNumPy的形状是:', imgNumPy_from_PIL.shape)  # imgNumPy的形状是: (667, 1000, 3)
    print('NumPy处理PIL图片的方式:(height, width, channels)',imgNumPy_from_PIL.shape)  
    # NumPy处理PIL图片的方式:(height, width, channels) (667, 1000, 3) 


    print()
    print('测试Python第三方库Pillow读取NumPy数据的格式'.center(50,'-'))
    mg_PIL_from_Numpy = Image.fromarray(imgNumPy_from_PIL)
    print(mg_PIL_from_Numpy.format, mg_PIL_from_Numpy.size, mg_PIL_from_Numpy.mode)  # None (1000, 667) RGB
    print('图片的宽度:', mg_PIL_from_Numpy.width, '图片的高度:', mg_PIL_from_Numpy.height)  # 图片的宽度: 1000 图片的高度: 667


    mg_PIL_from_Numpy.show() 
    img_PIL.show()

控制台输出结果:

Windows PowerShell
版权所有 (C) Microsoft Corporation。保留所有权利。

尝试新的跨平台 PowerShell https://aka.ms/pscore6

加载个人及系统配置文件用了 891 毫秒。
(base) PS C:\Users\chenxuqi\Desktop\News4cxq\test4cxq>  & 'D:\Anaconda3\envs\ssd4pytorch1_2_0\python.exe' 'c:\Users\chenxuqi\.vscode\extensions\ms-python.python-2021.1.502429796\pythonFiles\lib\python\debugpy\launcher' '61922' '--' 'c:\Users\chenxuqi\Desktop\News4cxq\test4cxq\test.py'

--------------测试opencv-python读取图片的格式--------------
opencv-python的图片读取格式:(height, width, channels) (667, 1000, 3)

------------测试Python第三方库Pillow读取图片的格式-------------
JPEG (1000, 667) RGB
图片的宽度: 1000 图片的高度: 667

-----------测试Python第三方库NumPy处理PIL图片的方式------------
imgNumPy的形状是: (667, 1000, 3)
NumPy处理PIL图片的方式:(height, width, channels) (667, 1000, 3)

----------测试Python第三方库Pillow读取NumPy数据的格式----------
None (1000, 667) RGB
图片的宽度: 1000 图片的高度: 667
(base) PS C:\Users\chenxuqi\Desktop\News4cxq\test4cxq> conda activate ssd4pytorch1_2_0
(ssd4pytorch1_2_0) PS C:\Users\chenxuqi\Desktop\News4cxq\test4cxq> 

使用的原图:bryant.jpg:
在这里插入图片描述在这里插入图片描述

运行结果展示:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值