2016-09-23 15 views
1

なぜこれが起こっているのか少し迷っています。だから私はイメージの中央値を取ってそれらから新しいイメージを作成しようとしていますが、newpixに赤色の緑色と青色のメジアンピクセルの値を取ろうとすると、エラー:pillow image TypeError:整数が必要です(型タプルを取得します)

TypeError:整数が必要です(GOTタイプタプル)

from PIL import Image, ImageChops,ImageDraw,ImageFilter 
import math 
import glob 
import os.path 
from os import listdir; 
import numpy 


image_list = [] 

redPixels = [] 
greenPixels = [] 
bluePixels = [] 

for filename in glob.glob(r"C:\Users\Elias\Desktop\Proj1\images\*.png"): 
    im = Image.open(filename) 
    image_list.append(im) 
im = Image.open(open(r"C:\Users\Elias\Desktop\Proj1\images\1.png",'rb')) 
width, height = im.size 
print(height) 
print (width) 

result = Image.new('RGB', (width,height)) 
newpix = result.load() 
for x in range (width): 
    for y in range (height): 
     for z in (image_list): 
      red = z.getpixel((x,y)) 
      blue = z.getpixel((x,y)) 
      green = z.getpixel((x,y)) 

      redPixels.append(red) 
      greenPixels.append(green) 
      bluePixels.append(blue) 
     red = sorted(redPixels) 
     blue = sorted(bluePixels) 
     green = sorted(greenPixels) 

     mid = int((len(image_list)+1)/2)-1 

     newRed = redPixels[mid] 
     newBlue = bluePixels[mid] 
     newGreen = greenPixels[mid] 
     newpix[x,y] = (newRed,newGreen,newBlue) 

result.save("Stacked.png") 
+1

完全なスタックトレースが必要です –

+0

説明できますか?私は少し失われています。 be_good_do_good –

+1

あなたはコンソールに入る完全なエラーを投稿できますか?スタック全体のトレースにも同様にコールフローがあります –

答えて

2

問題が起こるが、すべてのR、G、Bデータaを取得する行

 red = z.getpixel((x,y)) 
     blue = z.getpixel((x,y)) 
     green = z.getpixel((x,y)) 

     redPixels.append(red) 
     greenPixels.append(green) 
     bluePixels.append(blue) 

red = z.getpixel((x,y))でありますt x、yの位置ですので、タプル(255,255,255)のようになります。したがって、以下のようにコードを変更すると、それが機能しました:

from PIL import Image, ImageChops,ImageDraw,ImageFilter 
import math 
import glob 
import os.path 
from os import listdir; 
import numpy 


image_list = [] 

redPixels = [] 
greenPixels = [] 
bluePixels = [] 

for filename in glob.glob(r"C:\Users\Elias\Desktop\Proj1\images\*.png"): 
    im = Image.open(filename) 
    image_list.append(im) 
im = Image.open(open(r"C:\Users\Elias\Desktop\Proj1\images\1.png",'rb')) 
width, height = im.size 
print(height) 
print (width) 

result = Image.new('RGB', (width,height)) 
newpix = result.load() 
for x in range (width): 
    for y in range (height): 
     for z in (image_list): 
      rgb = z.getpixel((x,y)) 
      redPixels.append(rgb[0]) 
      greenPixels.append(rgb[1]) 
      bluePixels.append(rgb[2]) 
     red = sorted(redPixels) 
     blue = sorted(bluePixels) 
     green = sorted(greenPixels) 

     mid = int((len(image_list)+1)/2)-1 
     newRed = redPixels[mid] 
     newBlue = bluePixels[mid] 
     newGreen = greenPixels[mid] 

     newpix[x,y] = (newRed,newGreen,newBlue) 

result.save("Stacked.png") 
+1

ありがとう、しかし私は約30分後にそれを考え出した。 –

関連する問題