我正在尝试从网上自学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/