【问题标题】:How to convert Numpy Linear Array of pixels to Numpy multi dimensional image array如何将像素的 Numpy 线性数组转换为 Numpy 多维图像数组
【发布时间】:2021-12-17 13:37:44
【问题描述】:

您好,我有一个问题,其中有这样的像素线性列表:

[  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
 131 131 131 134 134 134 137 137 137 139 139 139 141 141]

我想把它转换成:


[[[  0   0   0]
  [  0   0   0]
  [  0   0   0]
  ...
  [145 145 145]
  [148 148 148]
  [149 149 149]]

就像普通的 numpy 图像数组一样。

感谢您的帮助。

【问题讨论】:

标签: python arrays image numpy opencv


【解决方案1】:

使用 numpy.reshape() 和 -1,numpy 会尝试自己设置第一个维度。

>>> import numpy
>>> a = numpy.arange(6)
>>> a
array([0, 1, 2, 3, 4, 5])
>>> a.reshape((-1,3))
array([[0, 1, 2],
       [3, 4, 5]])

【讨论】:

    【解决方案2】:

    numpy reshape 是您正在寻找的。 https://numpy.org/doc/stable/reference/generated/numpy.reshape.html

    但是请注意,当您重塑 numpy 数组时,您的新形状必须包含与输入数组相同数量的元素:

    import numpy as np
    
    a = np.array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  131, 131, 131, 134, 134, 134, 137, 137, 137, 139, 139, 139, 141, 141])
    
    print(a.reshape((10, 5)))
    

    因此,在您的示例中,您无法将 50 元素数组转换为 3xm 矩阵。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-21
      • 2023-03-17
      • 1970-01-01
      • 2010-09-27
      • 2011-12-07
      相关资源
      最近更新 更多