如何在JES中制作图像灰度的一部分?

时间:2015-06-01 16:52:22

标签: python image jython partial

您好,我正在尝试使用我的代码,并且似乎无法弄清楚如何将我的代码的一部分变成灰度。这是我的代码:

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)

感谢任何帮助,真的很难理解这一点。再次感谢您的帮助!

显示错误:

  

灰度(NP)   错误是:'tuple'和'int'

     

不合适的参数类型。   尝试使用无效类型的参数调用函数。这意味着你做了一些事情,比如尝试将字符串传递给期望整数的方法。   请查看/ Users / enochphan / Desktop / test

的第8行

1 个答案:

答案 0 :(得分:1)

这里有一些让你麻烦的事情:

  • 在y for循环后缩进你的代码(我猜你想要遍历所有的高度)。
  • 新颜色只是当前像素的平均值,因此在除以3之前需要使用加法来添加它们。
  • 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)