2016-08-04 141 views
2

我已经在一个numpy数组中加载了一个100x100 rgb图像。然后我将它转换为30000x1的numpy数组,以通过机器学习模型。这个模型的输出也是一个30000x1的numpy数组。如何将此数组转换回100x100三元组的一个numpy数组,以便我可以打印生成的rgb图像?如果初始数组是[r1 g1 b1],[r2 g2 b2],...,[],则展开到[r1 g1 b1 r2 g2 b2 ...]。我需要回到[r1 g1 b1],[r2 g2 b2],...,[]的形式。重塑阵列到rgb矩阵

我用于将图像加载作为数组:

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

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

+0

您的'reshape'似乎是正确的(尝试使用初始数组)。你如何转换为RGB,也许问题出在那里? – Alex

+0

我没有将图像转换为RGB。我将RGB图像加载到'img'数组中,并将其重新整形为100x100并将其存储在'im' – Sibi

+0

中,我指的是输出。从你的问题:“我试过.reshape((100,100,3)),我得到一个黑色的输出图像。” - 因此,我的问题,如何你转换回RGB图像?您是否尝试过重新整形并显示原始数组,而机器学习部分之间没有? – Alex

回答

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]]])