嗨,我正在尝试使用我的代码,似乎无法真正弄清楚如何将我的代码的一部分变成灰度。这是我的代码:
def grayScale(picture):
xstop=getWidth(picture)/2
ystop=getHeight(picture)/2
for x in range(0,xstop):
for y in range(0,ystop):
oldpixel= getPixel(picture,x,y)
colour=getColor(oldpixel)
newColor=(getRed(oldpixel),getGreen(oldpixel),getBlue(oldpixel))/3
setColor(picture,(newColor,newColor,newColor))
repaint(picture)
nP=makePicture(pickAFile())
show(nP)
感谢您的任何帮助,我们非常努力地理解这一点。再次感谢您的帮助!
显示错误:
grayScale(nP)
错误是:“ tuple”和“ int”
参数类型不合适。
试图用无效类型的参数调用函数。这意味着您做了一些尝试,例如尝试将字符串传递给需要整数的方法。
请检查/ Users / enochphan / Desktop / test的第8行
最佳答案
这里有些事情会给您带来麻烦:
在y for循环之后缩进代码(我想您希望遍历所有高度)。
新颜色只是当前像素的平均值,因此您需要使用加法将它们相加,然后除以三。
setColor()需要一个像素和一个颜色对象。您要更改的像素是oldpixel,并且颜色对象是使用makeColor()创建的。
这是实现所有修复的代码:
def grayScale(picture):
xstop=getWidth(picture)/2
ystop=getHeight(picture)/2
for x in range(0,xstop):
for y in range(0,ystop):
oldpixel= getPixel(picture,x,y)
colour=getColor(oldpixel)
newColor = (getRed(oldpixel)+getGreen(oldpixel)+getBlue(oldpixel))/3
setColor(oldpixel,makeColor(newColor,newColor,newColor))
repaint(picture)