python-改变图片通道排列

 1 '''  PIL 中的convert() 也有着改变通道排列的效果,期待之后补充'''
 2 
 3 import cv2
 4 from PIL import Image
 5 import numpy as np
 6 import matplotlib.pyplot as plt
 7 
 8 
 9 
10 img_path = '../data/a.jpg'
11 print("="*15,"Image.open() 读取图像","="*15)
12 img = Image.open(img_path)
13 print("Image.open() 读取图片,type(img) :",type(img))    # <class 'PIL.JpegImagePlugin.JpegImageFile'>
14 print("Image.open() 读取图片,img.size (没有shape属性) :",img.size)   # (328, 260)
15 print("Image.open() 读取图片,img.mode :",img.mode)      # RGB
16 # Image.open() 读取图片,没有shape属性,只有size(高,宽)
17 plt.subplot(221)
18 plt.imshow(img)
19 
20 print("="*15,"cv2.imread() 读取图像","="*15)
21 img_cv2 = cv2.imread(img_path)
22 print("cv2.imread() 读取图片, type(img_cv2):", type(img_cv2))       # <class 'numpy.ndarray'>
23 print("cv2.imread() 读取图片(高,宽,通道(B,G,R)):",img_cv2.shape)   # (260, 328, 3)
24 # 将通道的排列放在宽高之前
25 img = np.transpose(img_cv2, (2,0,1))
26 print("通过np.transpose 函数将通道放在宽高之前: ",img.shape)           # (3, 260, 328)
27 
28 # 显示原图(BGR排序),OpenCV 默认读取图片的数据为 (高,宽,通道(B,G,R))
29 plt.subplot(223)
30 plt.imshow(img_cv2)
31 # 尝试转换通道排列顺序,并显示转换后图像(RGB)
32 img_RGB = img_cv2[:,:,(2,1,0)]  # 改变通道的排列顺序
33 plt.subplot(224)
34 plt.imshow(img_RGB)
35 
36 img_RGB2 = img_cv2[:,:,::-1]    # 可以实现与上一行代码相同的效果
37 plt.subplot(222)
38 plt.imshow(img_RGB2)
39 print("OpenCV 默认读入图片颜色通道排列为 BGR,可以通过 img_RGB = img_cv2[:,:,(2,1,0)] 或 img_RGB2 = img_cv2[:,:,::-1]  将颜色通道排列改为 RGB")
40 
41 plt.show()
42 
43 ''' 运行结果:
44 =============== Image.open() 读取图像 ===============
45 Image.open() 读取图片,type(img) : <class 'PIL.JpegImagePlugin.JpegImageFile'>
46 Image.open() 读取图片,img.size (没有shape属性) : (328, 260)
47 Image.open() 读取图片,img.mode : RGB
48 =============== cv2.imread() 读取图像 ===============
49 cv2.imread() 读取图片, type(img_cv2): <class 'numpy.ndarray'>
50 cv2.imread() 读取图片(高,宽,通道(B,G,R)): (260, 328, 3)
51 通过np.transpose 函数将通道放在宽高之前:  (3, 260, 328)
52 OpenCV 默认读入图片颜色通道排列为 BGR,可以通过 img_RGB = img_cv2[:,:,(2,1,0)] 或 img_RGB2 = img_cv2[:,:,::-1]  将颜色通道排列改为 RGB
53 '''

 

posted @ 2020-08-05 21:22  Bro_Li  阅读(2988)  评论(0)    收藏  举报