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()

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_67313306/article/details/127524254