阿菊的OpenCv11——cv2讀取影像并用matplotlib顯示多幅影像以及RGB影像通道的拆分cv2.split與合并cv2.merge
- 0. 原始影像
- 1. cv2讀取影像并用matplotlib顯示
- 2.RGB影像通道的拆分與合并
- 3. matplotlib 顯示多幅影像
0. 原始影像

1. cv2讀取影像并用matplotlib顯示
import cv2
import matplotlib.pyplot as plt
img = cv2.imread('../images/ju.jpg')
plt.figure('Aju') #視窗名稱
plt.title('jujujuju') #影像名稱
plt.imshow(img)
plt.show()
e.g.運行結果如下:
為什么我們用plt顯示的影像看起來偏藍色呢?因為OpenCV在讀取影像的時候是按照BGR通道順序來讀取的,而我們平時看到的正常圖片的編碼格式為RGB通道順序,所以為了用plt將影像顯示為正常我們看到的影像,這里需要引入RGB影像通道的拆分與合并,
2.RGB影像通道的拆分與合并
將cv2讀取的影像按照BGR的通道順序進行拆分后再按照RGB的通道順序進行合并,影像就可以正常顯示了,
import cv2
import matplotlib.pyplot as plt
img = cv2.imread('../images/ju.jpg')
b, g, r = cv2.split(img) #按照BGR通道進行拆分
img = cv2.merge([r, g, b]) #按照RGB通道順序合并
plt.figure('Aju') #視窗名稱
plt.title('jujujuju')
plt.imshow(img)
plt.show()
e.g.運行結果如下:
3. matplotlib 顯示多幅影像
plt顯示多幅影像需要用到subplot,
import cv2
import matplotlib.pyplot as plt
import numpy as np
img = cv2.imread('../images/ju.jpg')
b0, g0, r0 = cv2.split(img)
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
zeros = np.zeros(img.shape[:2], dtype = "uint8")
b = cv2.merge([zeros, zeros, b0])
g = cv2.merge([zeros, g0, zeros])
r = cv2.merge([r0, zeros, zeros])
rg = cv2.merge([r0, g0, zeros])
rb = cv2.merge([r0, zeros, b0])
gb = cv2.merge([zeros, g0, b0])
plt.figure('AJu', figsize=(10, 10)) #視窗名稱和大小
plt.suptitle('Multi_ju')
plt.subplot(3, 3, 2), plt.title('origin'), plt.imshow(img), plt.axis('off')
plt.subplot(3, 3, 4), plt.title('R'), plt.imshow(r), plt.axis('off')
plt.subplot(3, 3, 5), plt.title('G'), plt.imshow(g), plt.axis('off')
plt.subplot(3, 3, 6), plt.title('B'), plt.imshow(b), plt.axis('off')
plt.subplot(3, 3, 7), plt.title('RG'), plt.imshow(rg), plt.axis('off')
plt.subplot(3, 3, 8), plt.title('RB'), plt.imshow(rb), plt.axis('off')
plt.subplot(3, 3, 9), plt.title('GB'), plt.imshow(gb), plt.axis('off')
#plt.axis('off')隱藏坐標軸
plt.show()
duangduangduang~

我會堅持分享更多關于計算機視覺的知識,同時也希望大家可以多多關注我,讓我們一起進步,加油加油!!!

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/235487.html
標籤:其他
