2014-05-14 5 views
3

내가 파이썬 스크립트를 실행하려고했다 (파이썬 2.6)에 getPixel와()를 사용하려고 할 때 "형식 오류 'INT'개체를 반복 가능하지 않다": 나는 다음과 같은 코드가 포함되어 파이썬

import Image 

def is_grey_scale(img_path="lena.jpg"): 
    im = Image.open(img_path) 
    w,h = im.size 
    for i in range(w): 
     for j in range(h): 
      r,g,b,_ = im.getpixel((i,j)) 
      if r != g != b: 
       return False 

    return True 

아래에 정의 된대로보고 오류입니다.

r,g,b, _ = im.getpixel((i, j)) 
TypeError: 'int' object is not iterable 

오류의 원인을 알려주세요. 당신은 4 개 변수 r, g, b, _im.getpixel((i, j))에서 반환 된 결과 압축을 풀려고

을 다음과 같이

답변

4

상황이다.

이 작업을 수행하려면 im.getpixel은 변수에 대해 4 개의 값만 제공하는 튜플 또는 다른 반복 가능한 목록을 반환해야합니다. 어느 정도 제공하면 문제가됩니다.

그러나 귀하의 경우에는 im.getpixel((i, j)) 함수가 int을 반환하고 있습니다. 이는 반복 가능하지 않으므로 불만을 제기합니다.

+2

또는'a, b, c = 1'을 시도해 볼 수 있으며, 대답과 마찬가지로'TypeError'를 얻을 수 있습니다. – huu

+0

@msvalkon 귀하의 사례는 귀하의 샘플에서 유효 합니다만, 당신은 분명히 iterable을 반환합니다. 그러나 Huu Nguyen이 지적한대로'a, b = 1'을 지정하면'TypeError'가됩니다. –

+1

@HuuNguyen 당신이 맞습니다. 이것은 의미가 있습니다 – msvalkon

1

방법의 정의는 다음과 같습니다.

def getpixel(self, xy): 
     """ 
     Returns the pixel value at a given position. 

     :param xy: The coordinate, given as (x, y). 
     :returns: The pixel value. If the image is a multi-layer image, 
      this method returns a tuple. 

이미지가 "다중 레이어 이미지"입니까? 나는 이미지 처리 과정 전체에서 동일한 이미지를 사용한다고 가정합니다. Lena on wikipedia

관련 문제