为什么matplotlib显示opencv图像不正常
2017-10-08 09:41
507 查看
在前面的《数字图像的加载、显示和输出》中提到,opencv对多个图片输出在同一个窗口并没有直接的支持手段,但有时候我们会有这个需求,这时可以用matplotlib搭配使用。
下面将4张图片放在一个窗口中显示。原始图像如下:
使用matplotlib将4幅图像显示在一个窗口的代码如下:
显示如下:
可以看出,图像的颜色显示不正常。
这是因为matplotlib使用的颜色模式是我们现在流行的RGB模式,而opencv使用的是BGR模式,即RGB的倒序模式,与我们通常的RGB是反向的。因此在使用matplotlib显示之前需要做一下图像颜色的转换。
注意下面代码中如下这一行:
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
再次输出,这次正常了:
那么问题来了,为什么opencv要采用BGR顺序的模式呢?这又是因为历史原因,早期的opencv开发者采用了BGR顺序,所以一直遗留下来了。那么早期的opencv开发者为什么要用BGR呢,因为那时的许多照相机生产厂家和软件开发商就是采用的BGR模式。
下面将4张图片放在一个窗口中显示。原始图像如下:
使用matplotlib将4幅图像显示在一个窗口的代码如下:
# coding=utf-8 import cv2 import matplotlib.pyplot as plt scooter_path = "scooter.png" # 带alpha通道的彩色图像 lenna_path = "lenna.bmp" # 3通道彩色图像 baboon_path = "baboon.bmp" # 3通道彩色图像 moon_path = "moon.bmp" # 灰度图像 pic = [scooter_path, lenna_path, baboon_path, moon_path] plt.figure(figsize=(8, 6)) for i in range(4): img = cv2.imread(pic[i]) plt.subplot(2, 2, i + 1) plt.imshow(img) plt.title(pic[i]) plt.show()
显示如下:
可以看出,图像的颜色显示不正常。
这是因为matplotlib使用的颜色模式是我们现在流行的RGB模式,而opencv使用的是BGR模式,即RGB的倒序模式,与我们通常的RGB是反向的。因此在使用matplotlib显示之前需要做一下图像颜色的转换。
注意下面代码中如下这一行:
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
import cv2 import matplotlib.pyplot as plt scooter_path = "scooter.png" # 带alpha通道的彩色图像 lenna_path = "lenna.bmp" # 3通道彩色图像 baboon_path = "baboon.bmp" # 3通道彩色图像 moon_path = "moon.bmp" # 灰度图像 pic = [scooter_path, lenna_path, baboon_path, moon_path] plt.figure(figsize=(8, 6)) for i in range(4): img = cv2.imread(pic[i]) img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # 注意这行。 plt.subplot(2, 2, i + 1) plt.imshow(img) plt.title(pic[i]) plt.show()
再次输出,这次正常了:
那么问题来了,为什么opencv要采用BGR顺序的模式呢?这又是因为历史原因,早期的opencv开发者采用了BGR顺序,所以一直遗留下来了。那么早期的opencv开发者为什么要用BGR呢,因为那时的许多照相机生产厂家和软件开发商就是采用的BGR模式。
相关文章推荐
- matplotlib不能正常显示图像
- python opencv 使用 Matplotlib显示图像
- matplotlib如何正常显示中文
- python︱matplotlib使用(读入、显示、写出、opencv混用、格式转换...)
- matplotlib使用show方法后不能显示图像的问题
- python matplotlib plot 数据中的中文无法正常显示的解决办法
- Matplotlib绘图汉字不能正常显示问题
- 《python+opencv学习》一、Gui Features in Opencv(2)Matplotlib显示图片
- 在Ubuntu14.04和Python3.4-3.6环境中,matplotlib不显示图像的问题的解决方法
- Python Matplotlib 中文不正常显示解决记录
- 图像显示—关于matplotlib.pyplot.imshow()函数
- OpenCV——Opencv彩色图像在matplot中显示问题的解决
- Linux下python matplotlib.pyplot在图像上显示中文的问题
- OpenCV——Opencv彩色图像在matplot中显示问题的解决
- ubuntu 下在 matplotlib 中正常显示中文的解决办法
- python实现Kmeans文本聚类,通过PCA降维和Matplotlib显示聚类3d三维图像
- python matplotlib 显示图像
- OpenCV——Opencv彩色图像在matplot中显示问题的解决
- 演示如何实现Matplotlib绘图并保存图像但不显示图形的方法
- Linux/MacOS下matplotlib能正常显示的中文字体选择