1

私はネットからpythonを教えようとしています。prg の経験はありません。Python の「image」モジュールを使用して、画像から赤を削除する関数を作成する方法について助けが必要です。私が書こうとしたコードは以下のとおりです...助けてください

import image

img = image.Image("luther.jpg")

newimg = image.EmptyImage(img.getWidth(),img.getHeight())

win = image.ImageWin()

def no_red():
    for col in range(img.getWidth()):
        for row in range(img.getHeight()):
            p = img.getPixel(col,row)
            newred = 0
            newgreen = p.getGreen()
            newblue = p.getBlue()
            newpixel = image.Pixel(newred,newgreen,newblue)
    return newimg.setPixel(col,row,newpixel)



print (newimg.getPixel(45,52))
win.exitonclick()

私は何を間違っていますか?どんなガイダンスも役に立ちます:)

よろしく >>

4

3 に答える 3

1

newimg.setPixelループ内で呼び出す必要がありforます。そうしないと、画像の最後にある 1 つのピクセルだけが置き換えられます。

def no_red():
    for col in range(img.getWidth()):
        for row in range(img.getHeight()):
            p = img.getPixel(col,row)
            newred = 0
            newgreen = p.getGreen()
            newblue = p.getBlue()
            newpixel = image.Pixel(newred,newgreen,newblue)
            newimg.setPixel(col,row,newpixel)

no_redまた、どこにも電話していません。代わりに、次のように書くことをお勧めします。

def no_red(image):
    new_image = ... # make a copy of image
    # original code that removes red subpixels
    return new_image

そして、次のように呼び出します。

new_image = no_red(original_image)
于 2013-08-06T10:53:52.853 に答える
1
for i in range(img.getWidth()):
        for j in range(img.getHeight()):
            old_pixel = img.getPixel(i, j)
            new_pixel = image.Pixel(0, old_pixel.getGreen(), old_pixel.getBlue())
            new_image.setPixel(i, j, new_pixel)

これは私の意見ではそれを行う最も簡単な方法です

于 2014-03-25T13:37:16.530 に答える