[英]Why is a BGR image displayed as grayscale?
我正在使用帶有 OpenCV 的 Google Colab 來處理.jpg
圖像。 Colab 的 OpenCV 的imshow
函數有問題,因此使用matplotlib
打印圖像。 我知道 OpenCV 使用 BGR 並使用matplotlib
正確顯示內容,我需要使用cv2
的cvtColor()
函數。
加載圖像並顯示時,它顯示為灰度,即使默認情況下它應該是 BGR。 同樣,轉換成灰度顯示圖像后,顯示為BGR。
由於圖像存儲為numpy
數組,我嘗試找到這些數組的維度。 應該是 BGR(顯示為灰度)的圖像正如預期的那樣是一個 3 維數組。 同樣,轉換成灰度后的圖像,正如預期的那樣是一個二維數組,但它仍然顯示為BGR。
BGR 圖像顯示為灰度:
灰度圖像顯示為 BGR:
從我的角度來看,原始圖像img
在第一張圖片中顯示為灰度的假設是錯誤的,因為:
img
具有三個顏色通道。因此,對於第一張圖片:您的視覺感知只是被圖像本身所欺騙。 :-)
實際的灰度轉換圖像(您的第二張圖片)與 Matplotlib 的標准顏色圖一起顯示。 正如馬克和其他人正確指出的那樣,您應該按如下方式更改代碼以獲得實際的“灰度圖像”:
plt.imshow(img, cmap='gray')
希望有幫助!
如果您希望以灰度轉換和顯示彩色圖像:
import matplotlib as plt
# Reading color image as grayscale
img = cv2.imread(path, 0)
plt.imshow(img, cmap='gray')
plt.show()
其中路徑是文件位置。
另一種方法是自己轉換。 您應該使用的過濾器如下:
def rgb2gray(rgb):
return np.dot(rgb[...,:3], [0.3, 0.59, 0.11]) # colorspace order [R, G, B]
grey_img = rgb2gray(img)
其中 R 為紅色,G 為綠色,B 為藍色。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.