タイトルの通りですが、32×32の画素配列(CIFAR-10の画像です。)が手元にあり、これを変形してmatplotlibで表示させたいです。
とりあえず3×3で書きます。
今、手元にある画素値の配列は
array = [ [[r11,r12,r13], [r21,r22,r23], [r31,r32,r33]], [[g11,g12,g13], [g21,g22,g23], [g31,g32,g33]], [[b11,b12,b13], [b21,b22,b23], [b31,b31,b33]] ]
という形です。[red][green][blue]の順で、一行ずつ画素値が入っています。
これを変形して
img_rgb = [ [[r11,g11,b11],[r12,g12,b12],[r13,g13,b13]], [[r21,g21,b21],[r22,g22,b22],[r23,g23,b23]], [[r31,g31,b31],[r32,g32,b32],[r33,g33,b33]] ] plt.imshow(img_rgb, cmap='gray', interpolation="none")
のように表示したいのですが、pythonに慣れておらずこの変形が出来ません。
今は
img_rgb = np.array([[[32],[32]],[3]]) for i in range(32): for j in range(32): img_rgb[i][j] = np.array([[array[0][i][j], array[1][i][j], array[2][i][j]]], dtype = np.uint8)
のように書いていますがうまくいきません。(list assignment index out of range.と言われます。思ったように画素値が入って行ってくれてないことだけは分かりました。)。
img_rgbの作り方が悪いか、その後のfor文が悪いのかも分かりません。多分img_rgbの形が悪いと考えていますが、色々形を変えてもなかなかうまくいきません。
どなたかどのように直せばいいかご教示ください。
よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー