【问题标题】:Reshape array to rgb matrix将数组重塑为 rgb 矩阵
【发布时间】:2019-05-03 04:27:30
【问题描述】:

我在一个 numpy 数组中加载了一个 100x100 的 rgb 图像。然后我将其转换为 30000x1 的 numpy 数组以通过机器学习模型。这个模型的输出也是一个 30000x1 的 numpy 数组。如何将此数组转换回 100x100 3 元组的 numpy 数组,以便打印生成的 rgb 图像?

如果初始数组为[r1 g1 b1],[r2 g2 b2],...,[],则展开为[r1 g1 b1 r2 g2 b2 ...]。我需要它以[r1 g1 b1],[r2 g2 b2],...,[] 的形式返回。

我用来将图像加载为数组的方法:

im=img.resize((height,width), Image.ANTIALIAS);
im=np.array(im);
im=im.ravel();

我已经尝试过 .reshape((100,100,3)) 并且得到了黑色输出图像。机器学习模型是正确的,不是得到黑色输出的原因。

【问题讨论】:

  • 您的reshape 似乎是正确的(尝试使用初始数组)。你是怎么转成RGB的,可能问题出在哪里?
  • 我没有将图像转换为 RGB。我正在将 RGB 图像加载到 img 数组中并将其重塑为 100x100 并将其存储在 im
  • 我指的是输出。根据您的问题:“我已经尝试过 .reshape((100,100,3)) 并且我得到了黑色输出图像。” - 因此我的问题是,如何 你是如何转换回 RGB 图像的?您是否尝试过重塑和显示您的原始数组,中间没有机器学习部分?

标签: python arrays numpy


【解决方案1】:

试试reshape((3, 100, 100))

a = np.random.random((3, 2, 2))
# array([[[ 0.28623689,  0.96406455],
#         [ 0.55002183,  0.73325715]],
#
#        [[ 0.44293834,  0.08118479],
#         [ 0.28732176,  0.94749812]],
#
#        [[ 0.40169829,  0.0265604 ],
#         [ 0.07904701,  0.19342463]]])
x = np.ravel()
# array([ 0.28623689,  0.96406455,  0.55002183,  0.73325715,  0.44293834,
#         0.08118479,  0.28732176,  0.94749812,  0.40169829,  0.0265604 ,
#         0.07904701,  0.19342463])
print(x.reshape((2, 2, 3)))
# array([[[ 0.28623689,  0.96406455,  0.55002183],
#         [ 0.73325715,  0.44293834,  0.08118479]],

#        [[ 0.28732176,  0.94749812,  0.40169829],
#         [ 0.0265604 ,  0.07904701,  0.19342463]]])
print(x.reshape((3, 2, 2)))
# array([[[ 0.28623689,  0.96406455],
#         [ 0.55002183,  0.73325715]],
#
#        [[ 0.44293834,  0.08118479],
#         [ 0.28732176,  0.94749812]],
#
#        [[ 0.40169829,  0.0265604 ],
#         [ 0.07904701,  0.19342463]]])

【讨论】:

    猜你喜欢
    • 2023-01-25
    • 2020-03-19
    • 1970-01-01
    • 2011-01-16
    • 2020-10-25
    • 2014-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多