Python代码创建图像的镜像,并将其与一定量的白色混合。

Python代码创建图像的镜像,并将其与一定量的白色混合。,python,colors,flip,Python,Colors,Flip,我是Python的新手,我正在尝试学习用Python处理图片。下面的这段代码是创建图片的镜像,然后将其淡入白色。但当我执行代码时,出现了下面的错误:“错误是:'int'和'function' 参数类型不正确。 试图使用无效类型的参数调用函数。这意味着您做了一些事情,例如尝试将字符串传递给需要整数的方法。“我不确定是什么原因导致此错误,我需要帮助。” def blendWhite(pixcel, fadeAmount): newRed = 255 * fadeAmount + getRed

我是Python的新手,我正在尝试学习用Python处理图片。下面的这段代码是创建图片的镜像,然后将其淡入白色。但当我执行代码时,出现了下面的错误:“错误是:'int'和'function' 参数类型不正确。 试图使用无效类型的参数调用函数。这意味着您做了一些事情,例如尝试将字符串传递给需要整数的方法。“我不确定是什么原因导致此错误,我需要帮助。”

def blendWhite(pixcel, fadeAmount):
    newRed = 255 * fadeAmount + getRed(pixel) * (1 - fadeAmount)
    newGreen = 255 * fadeAmount + getGreen(pixel) * (1 - fadeAmount)
    newBlue = 255 * fadeAmount + getBlue(pixel) * (1 - fadeAmount)
    setColor(pixel, makeColor(newRed, newGreen, newBlue))

def copyAndMirrorCat():
    catFile = getMediaPath("caterpillarSmall.jpg")
    catPict = makePicture(catFile)
    width = getWidth(catPict)
    height = getHeight(catPict)
    canvas = makeEmptyPicture(width, height * 2)
    # Now, do the actual copying
    for x in range(0, width):
        for y in range(0, height):
            color = getColor(getPixel(catPict, x, y))
            setColor(getPixel(canvas, x, y), color)
            h = height * 2
            fadeAmount(y, h)
            blendWhite(getPixel(canvas, x, (height * 2) - y - 1), fadeAmount)
    show(catPict)
    show(canvas)
    return canvas

def fadeAmount(y, h):
    fm = (h - y) / float(h) + 0.15
    if fm > 1:
        fm = 1
    return fm  

这就是结果的样子:

如果你看一下你说:

fadeAmount(y,h) 
blendWhite(getPixel(canvas,x,(height*2)-y-1),fadeAmount)
您将看到调用
fadeAmount()
,而不将值存储在变量中。然后尝试将函数传递给
blendWhite()
。这是行不通的。您需要存储并传递该值,如:

fa = fadeAmount(y,h)
blendWhite(getPixel(canvas,x,(height*2)-y-1),fa)
…或者只说一句话:

blendWhite(getPixel(canvas,x,(height*2)-y-1),fadeAmount(y,h))

如果你看下面几行,你会说:

fadeAmount(y,h) 
blendWhite(getPixel(canvas,x,(height*2)-y-1),fadeAmount)
您将看到调用
fadeAmount()
,而不将值存储在变量中。然后尝试将函数传递给
blendWhite()
。这是行不通的。您需要存储并传递该值,如:

fa = fadeAmount(y,h)
blendWhite(getPixel(canvas,x,(height*2)-y-1),fa)
…或者只说一句话:

blendWhite(getPixel(canvas,x,(height*2)-y-1),fadeAmount(y,h))

你应该分享更多你的错误。如果你通读它,你会在那里看到一个行号,这样你就可以知道它是从哪里来的。背景很重要。包括您正在使用的库也很有帮助。我怀疑您遇到的问题与“fadeAmount”有关-您在不保存值的情况下调用函数,然后尝试将函数名传递给blendWhite()。错误发生在第一行的newRed=255*fadeAmount+getRed(pixel)*(1-fadeAmount)输入错误,
pixcel
。您应该分享更多错误。如果你通读它,你会在那里看到一个行号,这样你就可以知道它是从哪里来的。背景很重要。包括您正在使用的库也很有帮助。我怀疑您遇到的问题与“fadeAmount”有关-您在不保存值的情况下调用函数,然后尝试将函数名传递给blendWhite()。错误发生在第一行的newRed=255*fadeAmount+getRed(pixel)*(1-fadeAmount)输入错误,
pixcel
。谢谢。我会解决的。它运行,但镜像没有显示,在原始图像下只有一个纯白色部分。@班夫,现在你只剩下逻辑问题,而不是程序爆炸。回去工作,谢谢。我会解决的。它运行,但镜像没有显示,在原始图像下只有一个纯白色部分。@班夫,现在你只剩下逻辑问题,而不是程序爆炸。回去工作。