2016-07-03 8 views
1

numpyのndarrayデータ構造と画像を表示するためのmatplotlibを使って画像操作に関する非常に基本的なことをテストしています。私は、私のピクセルを格納するnp.zeros((n、m))関数を持つ2次元配列を作成しました。私は単にグレースケールで作業していますので、私のピクセルを表現するのに1つの値が必要です。これは私のコードスニペットです: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に増加させるので、2番目のプロットは完全に灰色になりますが、まだ黒です。動作は実行されていないが、マトリックスは効果的に変更されている(印刷機能からチェックされている)。

だから私は、「手動」だけでいくつかのピクセルを修正しようとしました:

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個のピクセルが白です。 私は完全に欠けていると思う側面がいくつかあります。それはndarrayについての気が散っていて、いくつかのものに関係していると思います。

なぜこのようなことが起こるのか説明できる人は誰ですか?ありがとう

答えて

2

デフォルトでは、カラーマップの色は、プロットされるデータの最小値と最大値にマッピングされます。これを無効にするには、引数vminvmaxを使用します。

plt.matshow(matrix, cmap=plt.cm.gray, vmin=0, vmax=255) 
関連する問題