1

私は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  

結果は次のようになります:http://imageshack.us/a/img442/326/mirrorlinearwithwhite.jpg

4

1 に答える 1

1

あなたが言う行を見ると:

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)

...または、すべてを 1 つのステートメントにします。

blendWhite(getPixel(canvas,x,(height*2)-y-1),fadeAmount(y,h))
于 2012-10-04T22:47:01.223 に答える