OpenCV案例-用 matplotlib 顯示圖像(plt.imshow)
函數(shù) plt.imshow() 用于通過 matplotlib 庫顯示圖像。
函數(shù)說明:
matplotlib.pyplot.imshow(img[, cmap])
OpenCV 使用 BGR 格式,matplotlib/PyQt 使用 RGB 格式。使用 matplotlib/PyQt 顯示 openCV 圖像,要將 BGR 格式轉(zhuǎn)換為 RGB 格式:
# 圖片格式轉(zhuǎn)換:BGR(OpenCV) -> RGB(PyQt5)
imgRGB = CV2.cvtColor(imgBGR, CV2.COLOR_BGR2RGB)
參數(shù)說明:
img:圖像數(shù)據(jù),nparray 多維數(shù)組,對于 openCV(BGR)格式圖像要先進行格式轉(zhuǎn)換
cmap:顏色圖譜(colormap),默認為 RGB(A) 顏色空間
gray:灰度顯示
hsv:hsv 顏色空間
注意事項:
OpenCV 和 matplotlib 中的彩色圖像都是 Numpy 多維數(shù)組。但 OpenCV 使用 BGR 格式,顏色分量按照藍/綠/紅的次序排列,而 matplotlib 使用 RGB 格式,顏色分量按照紅/綠/藍的次序排序。因此用 plt.imshow() 顯示 OpenCV 彩色圖像時,先要進行顏色空間轉(zhuǎn)換,將Numpy 多維數(shù)組按照紅/綠/藍的次序排序。
plt.imshow() 可以直接顯示 OpenCV 灰度圖像,不需要格式轉(zhuǎn)換,但需要使用 cmap=‘gray’ 進行參數(shù)設(shè)置。
plt.imshow() 可以使用 matplotlib 庫中的各種方法繪圖,如標題、坐標軸、插值等,詳見?matploblib Document。
PyQt5 也使用 RGB 格式,因此在 PyQt5 中顯示 OpenCV 彩色圖像時,也要進行顏色空間轉(zhuǎn)換。
基本例程:
? ?
? ?
程序說明:
圖 1 中 OpenCV 的 BGR 彩色圖像已轉(zhuǎn)換為 RGB 格式,彩色圖像的顏色顯示正常;
圖 2 中 OpenCV 的 BGR 彩色圖像格式未做轉(zhuǎn)換,彩色圖像的顏色顯示異常;
圖 3 中 plt.imshow() 設(shè)置 cmap=‘gray’,灰度圖像的顏色顯示正常;
圖 4 中 plt.imshow() 未設(shè)置 cmap=‘gray’,灰度圖像的顏色顯示異常。

轉(zhuǎn)載:https://blog.csdn.net/youcans/article/details/121169102
歡迎關(guān)注公眾號:python風控模型,學習更多知識。
