2016-07-03 95 views
1

我只是測試非常基本的東西有關numpy的ndarray數據結構和matplotlib圖像處理顯示圖像。我使用np.zeros((n,m))函數創建了一個二維數組,其中存儲了我的像素,以便讓事情變得簡單我只是在灰度級中工作,所以我只需要一個值來表示像素。這是我的代碼片段:基礎圖像處理與numpy和matplotlib

import numpy as np 
import matplotlib.pyplot as plt 

matrix= np.zeros((4,4)) 
print(matrix) 
plt.matshow(matrix, cmap=plt.cm.gray) #plot matrix 

matrix+=128 #increase each pixel value by 128 
print(matrix) #print the content of matrix 
plt.matshow(matrix, cmap=plt.cm.gray) #plot matrix 

我從這個代碼想到的是,第一個情節將完全黑色的,因爲每一個「像素」的值爲0,這裏沒有任何問題。然後我將像素從0增加到128,所以第二個圖應該是完全灰色的,但仍然是黑色的。就像沒有執行任何操作,但矩陣有效地改變了(從打印功能中檢查)。

於是,我就只修改一些像素「手動」:

matrix[0,0]=255 
matrix[0,3]=255 
matrix[3,0]=255 
matrix[3,3]=255 

plt.matshow(matrix, cmap=plt.cm.gray) #plot matrix 

,現在4個像素是白色的。 有一些方面,我完全錯過了,我認爲這是相關的numpy和一些關於ndarray的東西,以及如何管理。

有人可以解釋爲什麼會發生這種情況?謝謝

回答

2

默認情況下,顏色映射的顏色被映射到要繪製的數據的最小值和最大值。要覆蓋此參數,請使用參數vminvmax

plt.matshow(matrix, cmap=plt.cm.gray, vmin=0, vmax=255)