2016-08-04 142 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]]])