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图像通道的拆分与合并。
将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.运行结果如下:
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~
我会坚持分享更多关于计算机视觉的知识,同时也希望大家可以多多关注我,让我们一起进步,加油加油!!!