setPixel()缺少1个必需的位置参数:“ color”

时间:2019-05-24 19:13:11

标签: python posterization

我在大学使用这个叫做Cengage Mindtap的程序,它在语法和所需结果上非常严格。而且我一直遇到类型错误。这一切都在python Mindtap终端设备上运行,因此我不确定python空闲还是其他原因会导致其他问题。谁能解释这个错误将导致什么?另外,导入的图像文件也由Mindtap提供了代码。

'''

from images import Image

def posterize(image,rgb):
    whitePixel = (255,255,255)
    for y in range(image.getHeight()):
        for x in range(image.getWidth()):
            (nr, ng, nb) = image.getPixel(x,y)
            average = (nr + ng + nb)/3
            if average < 128:
                image.setPixel((x,y),rgb)
            else:
                image.setPixel((x,y),whitePixel)

def main():
    filename = input("Enter the image file name: ")
    red = int(input("Enter an integer [0..255] for red: "))
    green = int(input("Enter an integer [0..255] for green: "))
    blue = int(input("Enter an integer [0..255] for blue: "))                    
    image = Image(filename)
    posterize(image, (red, green, blue))
    image.draw()

if __name__ == "__main__":
   main()

'''

3 个答案:

答案 0 :(得分:0)

好吧,您的问题将出现在此行:

image.setPixel((x,y),rgb)

Python告诉您的是,您没有将足够的信息传递给setPixel,它需要更多信息。我猜想setPixel希望您的xy坐标而不是您提供的元组。也许这会有所帮助:

image.setPixel(x,y,rgb)

通过这种方式,setpixel可以得到3个参数,而不是2个,这可能正是它想要的(我不熟悉此模块)

答案 1 :(得分:0)

我不知道这个图书馆,所以这是我在黑暗中的镜头:

我猜想Image.setPixel方法需要三个参数x, y, color,而不是两个参数(x, y), color

答案 2 :(得分:0)

该行:

['AL', 'AK', 'AZ', 'AR', 'CA', 'CO', 'CT', 'DE', 'FL', 'GA', 'HI', 'ID', 'IL', 'IN', 'IA', 'KS', 'KY', 'LA', 'ME', 'MD', 'MA', 'MI', 'MN', 'MS', 'MO', 'MT', 'NE', 'NV', 'NH', 'NJ', 'NM', 'NY', 'NC', 'ND', 'OH', 'OK', 'OR', 'PA', 'RI', 'SC', 'SD', 'TN', 'TX', 'UT', 'VT', 'VA', 'WA', 'WV', 'WI', 'WY']

也需要单独的坐标。这是最终版本:

image.setPixel(x,y,whitePixel)