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 '''

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM