2017-04-20 27 views
0

長方形の画像を正方形の画像に変換したいと思います。 しかし、私には問題があります。長方形の画像を正方形に再構成する

マイトライアルPythonコードはここにある:

from PIL import Image 
import numpy as np 

im = Image.open('aa.png') 
pixMap = im.load() 

img = Image.new(im.mode, im.size) 
sqrWidth = np.ceil(np.sqrt(im.size[0]*im.size[1]) 

pixNew = Image.new(im.mode, (im.size[0]*im.size[1], 1)) 
pixSave = Image.new(im.mode, (sqrWidth, sqrWidth)) 

k=0 
for i in range(img.size[0]): 
    for j in range(img.size[1]): 
     pixNew[k] = pixMap[i, j] 
     k=k+1 

k=0 
for i in range(sqrWidth): 
    for j in range(sqrWidth): 
     pixSave[i, j] = pixNew[k] 
     k=k+1 

im.close() 
img.show()  
img.save("out.png") 
img.close() 

私のエラーはここにある:

Traceback (most recent call last): 
    File "rect2square.py", line 13, in <module> 
    pixNew[k] = pixMap[i, j] 
    File "/usr/lib/python2.7/dist-packages/PIL/Image.py",  line 528, in __getattr__ 
raise AttributeError(name) 
AttributeError: __setitem__ 

間違っているのですか?

答えて

0

PILにサイズ変更画像フィルタを使用できます。

from PIL import Image 
import numpy as np 

im = Image.open('image.png') 
sqrWidth = np.ceil(np.sqrt(im.size[0]*im.size[1])).astype(int) 
im_resize = im.resize((sqrWidth, sqrWidth)) 
im_resize.save('output.png') 

これは画像を正方形にします。これは、あなたの望むことですか?

入力画像

input

出力画像

output

+0

いいえ、それは私がしたいものではありません..私の目標はそうではありませんストレッチングではなく、データシーケンスの再配置を行います。いずれにせよ、ありがとう〜。 –

+0

データシーケンスの再形成はどういう意味ですか? – Robbie

+0

このように:[1234,5678] - > [123、456、780] ...ゼロパディングを持つ正方形に。ありがとう。 –

0

あなたは、元の画像の形状を維持し、まだそれ平方作る、作るためにパディングを追加することを検討するために探している場合それは四角形をしてから、Robbieが提案するようにサイズを変更します

+0

これは答えではありません。あなたはコメントのような提案をしています。 [Look](https://stackoverflow.com/help/how-to-answer)答えを投稿する方法! – Zico

+0

これは答えではなくコメントでなければならないと思います。 –

関連する問題