Matplotlib顯示彩圖¶
概要¶
opencv讀入的圖片, 我們如何來顯示它? Python科學計算里面有一個著名的可視化包, 名字叫做Matplotlib . 將圖片的顏色空間進行轉換后,分別用matplotlib顯示RGB圖跟灰度圖。
keywords Matplotlib 圖片顯示 彩圖
引入matplotlib的包¶
引入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()
plt錯把BGR當作RGB¶
如果你跟著阿凱一步步做, 你肯定可以得到下面這個陰森森的圖片.
因為matploblib的圖片格式, 默認是RGB格式的, 之前阿凱講過opencv 因為歷史原因, 讀入的圖片的格式是BGR的.
所以, R
通道變成了B
通道, B
通道變成了R
通道, 所以才會這樣.
如果想要正確顯示圖像,就需要使用cvtColor進行顏色空間的轉換,從BGR轉換為RGB。
Matplotlib顯示圖片-正確演示¶
我們來看一下完整版本的程序.
代碼見
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()
顯示效果: