1. 程式人生 > 程式設計 >python中plt.imshow與cv2.imshow顯示顏色問題

python中plt.imshow與cv2.imshow顯示顏色問題

在用plt.imshowcv2.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顯示結果

python中plt.imshow與cv2.imshow顯示顏色問題

OpenCV顯示結果

python中plt.imshow與cv2.imshow顯示顏色問題

下面看下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顯示顏色內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!