使用numpy和matplotlib进行基本图像处理

时间:2016-07-03 13:34:27

标签: python arrays numpy image-processing matplotlib

我只是用numpy ndarray数据结构和matplotlib来测试图像操作的基本内容,以显示图像。我创建了一个带有np.zeros((n,m))函数的二维数组,用于存储我的像素,为了保持简单,我只是在灰度级工作,因此我只需要一个值来表示我的像素。这是我的代码片段:

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以及如何管理有关。

有人能解释我为什么会这样吗?感谢

1 个答案:

答案 0 :(得分:3)

默认情况下,颜色映射的颜色将映射到要绘制的数据的最小值和最大值。要覆盖此选项,请使用参数vminvmax

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