python - 使用 python 模块 image 去除图像中的红色的函数

标签 python image colors rgb

我正在尝试从网上自学Python。以前没有prg经验。需要有关如何使用 python 中的“图像”模块编写函数以从图像中删除红色的帮助。我尝试编写的代码如下...请帮忙

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()

我做错了什么?任何指导都会有帮助:)

问候>>

最佳答案

您必须在 for 循环中调用 newimg.setPixel,否则它只会在图像末尾一直替换一个像素:

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)

关于python - 使用 python 模块 image 去除图像中的红色的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18077665/

相关文章:

python - 为什么复制时我的原始嵌套列表会发生变化?

python - 如何将 Python 项目链接到 WSGI 文件?

wpf - WPF-图片 'is not part of the project or its Build Action is not set to Resource'

c++ - 灰度图像到单色度?

r - 如何使用 scale_colour_manual?

html - 更改 Html5 Canvas 元素的颜色深度

python - Django 1.5 url 重定向与正则表达式?

python - Pandas groupby 数据并进行计算

javascript - Node.js 服务器不显示图像

python - 在 python 枕头中堆叠多个图像