任意の数値に対して、各数値に対応した(r,g,b)の値を代入し再画像化したいのですが、「KeyError: '8'」とエラーが表示されてしまい難航してしまいました。
今回のコードは、klistの数値に対して並んでいる順番ごと(今回は8が1番目、2が2番目、、、といった順番です。)にrgbの値を対応させて、それを用いてcdの60000個の数値を一気に変換することを目指しています。
python
1h,w,c = img.shape #(200,300,3) 2 3klist=[8, 2, 3, 1, 9, 5, 4, 0, 7, 6] #0~9の数値がランダムに並ぶlistです。 4 5mydict={0:(255,0,0),1:(0,255,0),2:(0,0,255),3:(255,255,0),4:(255,0,255),5:(0,255,255),6:(100,100,100),7:(100,100,0),8:(100,0,100),9:(0,100,100)} 6 7cd=8,5,3,7,4,7,8,5,4,3,1,4,7........8,6,9 #60000個の0~9の数値が並んでます。 8 9for x in cd: 10 klist[x]=mydict[x] 11 12pixels = cd.reshape(h,w) 13plt.imshow(pixels) 14plt.show()
途中経過として、
klist[0]=8 → (255,0,0)
klist[1]=2 → (0,255,0)
klist[2]=3 → (0,0,255)
・・・・・・・・・
klist[9]=6 → (0,100,100)
のように置換して、
上記の各数値の対応関係を活用した結果として、
cd=[(255,0,0),(0,255,255),(0,0,255).......(0,100,100),(255,0,255)]
のような出力を用いて、最終的に300×200画素の元画像のサイズに戻したいと考えています。
pythonの初心者であるため見苦しい箇所ばかりであると思いますが、ご教授頂けたら幸いです。よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/05/09 01:53 編集
2019/05/09 02:05
2019/05/09 02:44
2019/05/09 03:07
2019/05/09 03:53
2019/05/09 05:49
2019/05/09 06:56
2019/05/09 07:04
2019/05/09 09:10
2019/05/09 10:04