程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

【Python-Matplotlib】 使用matplotlib模塊顯示彩色圖像出現失真、顏色模式很奇怪的問題

編輯:Python

一、出現問題的原因

如果你是用OpenCV的imread函數讀取圖像,從而得到圖像多維數組的;由於OpenCV中描述圖像的多維數組三通道依序為BGR,而matplotlib中的imshow函數依RGB的順序顯示圖像,所以顏色上顯示混亂、有圖像失真毛病。

二、解決方法——逆向索引調用或轉換顏色模式

2.1 步長為-1,逆轉通道

plt.imshow(x[:,:,[2,1,0]])

2.2 離散逆向索引 

plt.imshow(img[:, :, ::-1])

2.3 轉換顏色模式

plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))

三、完整案例

import cv2 as cv
import matplotlib.pyplot as plt
img = cv.imread('images/lena.png')
plt.figure()
plt.subplot(1,2,1)
arr = plt.hist(img.ravel())
plt.subplot(1,2,2)
plt.imshow(img[:, :, ::-1])
plt.show()
print(img.ravel())
print(arr)
cv.waitKey()
cv.destroyAllWindows()

顯示很正常

 


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved