python中plt.imshow與cv2.imshow顯示顏色問題
阿新 • • 發佈:2020-07-19
在用plt.imshow
和cv2.imshow
顯示同一幅圖時可能會出現顏色差別很大的現象。
這是因為:opencv的介面使用BGR,而matplotlib.pyplot
則是RGB模式
import cv2 import numpy as np import matplotlib.pyplot as plt img = cv2.imread('lena_std.tif') b,g,r = cv2.split(img) img2 = cv2.merge([r,b]) plt.subplot(121);plt.imshow(img) plt.subplot(122);plt.imshow(img2) plt.show() cv2.imshow('bgr image',img) cv2.imshow('rgb image',img2) cv2.waitKey(0) cv2.destroyAllWindows()
程式執行結果如下:
Matplotlib顯示結果
OpenCV顯示結果
下面看下cv2.imshow()和plt.imshow()的區別
- 什麼時候使用plt.show(),什麼時候用cv2.imshow()?
- 如果需要展示讀入的影象,或者展示對讀入影象進行一系列操作後的影象時,使用cv2.imshow()
- 如果不需要展示原始影象,而是繪製一張新的影象,使用plt.imshow()
- 其實兩者都可以,但要注意的是opencv是BGR通道,plt預設RGB通道,若使用cv2.imread()讀入影象,用plt.imshow()展示原始影象或者展示對讀入影象進行一系列操作後的影象時,需要進行通道轉換。
- 在展示灰度影象時,cv2.imshow(‘gray',gray)
- plt.imshow(gray,cmap=‘gray'),plt.title(‘gray')
到此這篇關於plt.imshow與cv2.imshow顯示顏色問題的文章就介紹到這了,更多相關plt.imshow與cv2.imshow顯示顏色內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!