私はforループで取り込んでいる複数のイメージがあります。私はxとyの両方で1ピクセルずつイニシャルをローリングし、毎回ローリングイメージを保存することによって、各イメージに対して5つの疑似レイヤーを取得したいと考えています。Python:配列を複数回ローリングし、各繰り返しをイメージとして保存する
私は1枚の画像で練習していますが、そこから5つのレイヤーを得ることができますが、喜びはありません。
私のコードは以下のとおりですが、最初の画像のみを保存しています。出力はpl_0.tif
list_frames = glob.glob('*.gif')
for index, fname in enumerate(list_frames):
im = Image.open(fname)
shift=1
imary0 = np.array(im) # initial image (first layer)
imary1x = np.roll(imary0, shift, axis=0) # shift image by one pixel to create second layer
imary1xy = np.roll(imary1x, shift, axis=1)
imary2x = np.roll(imary1xy, shift, axis=0) # shift previous image again to create third layer
imary2xy = np.roll(imary2x, shift, axis=1)
imary3x = np.roll(imary2xy, shift, axis=0) # shift previous image again to create fourth layer
imary3xy = np.roll(imary3x, shift, axis=1)
imary4x = np.roll(imary3xy, shift, axis=0) # shift previous image again to create fifth layer
imary4xy = np.roll(imary4x, shift, axis=1)
im0 = Image.fromarray(imary0)
im0.save('pl_{}.tif'.format(index))
im1 = Image.fromarray(imary1xy)
im1.save('pl_{}.tif'.format(index))
im2 = Image.fromarray(imary2xy)
im2.save('pl_{}.tif'.format(index))
im3 = Image.fromarray(imary3xy)
im3.save('pl_{}.tif'.format(index))
im4 = Image.fromarray(imary4xy)
im4.save('pl_{}.tif'.format(index))
im.close()
どのような提案ですか? 、
'' pl _ {}。tif'.format(index) 'はあなたが何回も呼び出すと異なる結果になると思いますか? – njzk2
@ njzk2:答えは:コーヒーブレークなしで同じコードを見ている時間が長すぎます。 –
あなたは 'roll'呼び出しを1行にまとめることができ、forループを使ってファイルを書くことができます。それはあなたが何をしようとしているかのようです。 – Andrew