【问题标题】:basic image processing with numpy and matplotlib使用 numpy 和 matplotlib 进行基本图像处理
【发布时间】: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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2016-10-21
      • 2012-02-24
      • 2018-01-24
      • 1970-01-01
      • 2015-06-18
      • 2022-06-11
      • 2013-04-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多