matplotlib和opencv


Python中彩色圖像使用 OpenCV 加載時是 BGR 模式。但是 Matplotib 是 RGB 模式。所以彩色圖像如果已經被 OpenCV 讀取,那它將不會被 Matplotib 正確顯示。

opencv:

import cv2 import matplotlib.pyplot as plt
import numpy as np img1
= cv2.imread('1.jpg') # img1為BGR cv2.imshow('image', img1) # 圖1


img2 = plt.imread('1.jpg') # img2為RGB
plt.imshow(img2) # 圖2

img_new = np.zeros(img1.shape)
img_new[:,:,0] = img1[:,:,2]
img_new[:,:,1] = img1[:,:,1]
img_new[:,:,2] = img1[:,:,0] # 將img1轉為RGB模式img_new
img_new = img_new.astype(np.uint8) # 將默認的flost64改為uint8
plt.imshow(img_new) # 此時img_new和img2一樣,和圖2結果一樣

plt.imshow(img1) # 利用plt顯示opencv讀取的圖片,則不會正確顯示。如圖3

                                    圖1                                                                                  圖2                                                                                      圖3

 

  img = cv2.imread('1.jpg') img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) #利用opencv將BGR圖轉為灰度圖
cv2.imshow('Gray_image', img_gray) #圖1

plt.imshow(img_gray) #圖2,直接查看失敗
plt.imshow(img_gray,cmap='gray') # 圖3,加入參數查看灰度成功

 

import cv2 import numpy as np img1 = cv2.imread('1.jpg', 0) #以灰度模式讀入
img1 = cv2.imread('1.jpg', cv2.IMREAD_GRAYSCALE)  #同上,這應該與上文先讀入后轉灰度是一致的

img1 = cv2.imread('1.jpg', 1) #以彩圖模式讀入
img1 = cv2.imread('1.jpg', cv2.IMREAD_COLO) # 同上,讀入一副彩色圖像。圖像的透明度會被忽略,這是默認參數。 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM