1

我在大学里使用这个叫做 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()

'''

4

3 回答 3

0

好吧,您的问题将在这一行:

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

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

image.setPixel(x,y,rgb)

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

于 2019-05-24T19:16:38.403 回答
0

我不知道这个库,所以这是我在黑暗中拍摄的:

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

于 2019-05-24T19:16:47.823 回答
0

该行:

image.setPixel(x,y,whitePixel) 

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

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()
于 2020-07-29T06:10:46.497 回答