【发布时间】:2016-11-05 08:16:14
【问题描述】:
我只是在使用 numpy ndarray 数据结构和 matplotlib 测试有关图像处理的非常基本的东西,以显示图像。我用 np.zeros((n,m)) 函数创建了一个二维数组来存储我的像素,为了让事情变得简单,我只是在灰度中工作,所以我只需要一个值来表示我的像素。这是我的代码 sn-p:
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 以及如何管理的一些内容有关。
有谁能解释一下为什么会这样?谢谢
【问题讨论】:
标签: python arrays numpy image-processing matplotlib