2016-09-23 52 views
1

我有點失落,爲什麼發生這種情況將不勝感激。所以我試圖取得圖像的中間值,並從它們中創建一個新圖像,但是當試圖使newpix獲取我的紅色綠色和藍色中值像素的值時,錯誤:枕頭圖像TypeError:需要一個整數(得到類型元組)

TypeError:需要整數(得到類型元組)

發生

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

問題是在線

 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))將獲得所有的R,G,B數據的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分鐘就知道了。 –

相關問題