阿菊的OpenCv11——cv2读取图像并用matplotlib(plt)显示多幅图像以及RGB图像通道的拆分(cv2.split)与合并(cv2.merge)

阿菊的OpenCv11——cv2读取图像并用matplotlib显示多幅图像以及RGB图像通道的拆分cv2.split与合并cv2.merge

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~

在这里插入图片描述

我会坚持分享更多关于计算机视觉的知识,同时也希望大家可以多多关注我,让我们一起进步,加油加油!!!

在这里插入图片描述

  • 18
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 14
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值