2016-09-23 4 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

일어나는 문제는 모든 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 분 후에 알아 냈습니다. –

관련 문제