opencv读入的图片, 我们如何来显示它? Python科学计算里面有一个著名的可视化包, 名字叫做Matplotlib . 将图片的颜色空间进行转换后,分别用matplotlib显示RGB图跟灰度图。
引入pyplot
并起别名为plt
from matplotlib import pyplot as plt
使用cv2
读入图片. 读入彩图.
import cv2
# 导入一张图像 模式为彩色图片
img = cv2.imread('cat.jpg', cv2.IMREAD_COLOR)
显示图片
plt.imshow(img)
隐藏画布的坐标系, 并展示图片.
# 隐藏坐标系
plt.axis('off')
# 展示图片
plt.show()
如果你跟着阿凯一步步做, 你肯定可以得到下面这个阴森森的图片.
因为matploblib的图片格式, 默认是RGB格式的, 之前阿凯讲过opencv 因为历史原因, 读入的图片的格式是BGR的.
所以, R
通道变成了B
通道, B
通道变成了R
通道, 所以才会这样.
如果想要正确显示图像,就需要使用cvtColor进行颜色空间的转换,从BGR转换为RGB。
我们来看一下完整版本的程序.
代码见CH1.2_ImageDisplayByMatplotlib.py
# -*- coding: utf-8 -*-
import numpy as np
import cv2
# 引入Python的可视化工具包 matplotlib
from matplotlib import pyplot as plt
# 导入一张图像 模式为彩色图片
img = cv2.imread('cat.jpg', cv2.IMREAD_COLOR)
# plt.imshow(img)
# 直接绘制 ndarray 颜色很诡异
# 原因是opencv读取到的图片是BGR格式的,Matplotlib按照RGB格式解析的
# 所以我们需要将颜色空间转换
plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
# 隐藏坐标系
plt.axis('off')
# 展示图片
plt.show()
显示效果: