破損した画像を保存するために引き起こしている画像のピクセルを操作することにより、私は問題を抱えていて破損した画像は、私はPILを使って画像を開き、numpyのに変換し、だから... ... PIL
を保存されています配列:
image = Image.open("myimage.png")
np_image = np.asarray(image)
その後、私は[channel][x][y]
へ[x][y][channel]
から、それを変換するために、イメージをトランスポーズ:
pixels = np.transpose(np_image, (2, 0, 1))
私は当時0にこのイメージを転置した場合、この配列からPIL画像を作成し、画像を保存します。
image1 = np.transpose(pixels, (1, 2, 0))
image2 = Image.fromarray(image1, 'RGB')
image2.save('image2.png')
そして、保存された画像は、「myimage.png」と同じです。もし代わりに上記のコードの
しかし、私は、最初の画像の配列内の要素にpixels
を割り当てる:
images = np.zeros([10, 3, 50, 50]) # The images are 50x50 with 3 channels
images[0] = pixels
image3 = np.transpose(images[0], (1, 2, 0))
image4 = Image.fromarray(image3, 'RGB')
image4.save('image4.png')
そして「image4.png」が破損しています。
「myimage.png」のに対し、実際にある:次のようにそれが表示されます
私は、画像を保存した場合、なぜそれは私が直接pixels
を転置されたときに、画像保存された値は期待どおりですが、配列images
の最初の要素にpixels
を設定してこのイメージを転置すると、保存されたイメージは破損していますか?
ありがとうございます!
ああ、小さなミスがあった:私は今np.array 'からそれを変更しました([10、3、50、50])を 'np.zeros([10、3、50、50])'に変更します。しかし、私が抱えていた問題はまだ同じです... – Karnivaurus