opencv 和 matplot 展示图片

这里有一张图片,图片名是flower.jpg 在这里插入图片描述
在图像处理时,如果需要展示图片,我们可以使用 opencv 读取与展示,也可以使用 matplotlib 进行读取和展示。但是 opencv 读取彩色图像的方式却并不是 RGB 的方式,opencv 默认是以 BGR 的形式进行读取的(这其中的历史原因似乎和相机有关,大家可以查阅相关资料)。

读取图片

下面是 opencv 和 matplotlib 的读取图片的方式

import cv2 as cv
import matplotlib.pyplot as plt
#opencv
imgA = cv.imread("flower.jpg",1)
# matplotlib
imgB = plt.imread("flower.jpg")

展示图片

使用同一种模块读取和展示,效果是一样的。这里提及的区别主要是 imgA 和imgB 的存储方式不同。

opencv

在这里插入图片描述

matplotlib

在这里插入图片描述

使用不同模块进行展示

opencv 读取,matplot 展示。
在这里插入图片描述

对比

opencv 存储的 imgA:
在这里插入图片描述
matplotlib 存储的 imgB:
在这里插入图片描述
可以看出 imgA 和 imgB 都是三维矩阵,最内层的三个元素分别是我们常说的“ RGB ”,而 opencv 和 matplotlib 是反过来的,使用的是 BGR 。

使用 matplitlib 展示图像

如果我们想将opencv 的图像转换为 RGB 的形式并展示,可以参考下面几种方法。

通道分离与重新合并

import cv2 as cv
import matplotlib.pyplot as plt
	
img = cv.imread("flower.jpg", 1)
b, g, r = cv.split(img)    #通道分离
img = cv.merge([r, g, b])    #改序合并
plt.imshow(img)
plt.show()

结果如图:

在这里插入图片描述

使用 cvtColor 函数

import cv2 as cv
import matplotlib.pyplot as plt
	
img = cv.imread("flower.jpg", 1)
img = cv.cvtColor(img, cv.COLOR_BGR2RGB)  #颜色通道转换
plt.imshow(img)
plt.show()

结果如图:
在这里插入图片描述

反向的切片访问

numpy 数组也是可以使用切片访问的,并且 img 也是 numpy 数组。

import cv2 as cv
import matplotlib.pyplot as plt

img = cv.imread("flower.jpg", 1)
img = img[:,:,::-1]    #色彩是第三个维度,::-1 表示矩阵的逆序全访问
plt.imshow(img)
plt.show()

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值