颜色平均值在特定范围内

时间:2017-09-29 03:59:07

标签: python jes

我想使用用户输入确定的范围内的像素的平均颜色来更改整个图片的白平衡。我正在使用名为startXendXstartYendY的变量。

我设法从单个像素坐标进行,但不是从范围内的像素的平均值。 greyValue是我被卡住的地方,因为我不知道如何返回颜色平均值。

def whiteBalanceBonus():
  File=pickAFile()
  myPict=makePicture(File)
  startX=requestInteger("Enter the value of the first 'X' Coordinate in the range")
  startY=requestInteger("Enter the value of the first 'Y' Coordinate in the range")
  endX=requestInteger("Enter the value of the last 'X' Coordinate in the range")
  endY=requestInteger("Enter the value of the last 'Y' Coordinate in the range")
  for x in range(startX,endX):
    for y in range(startY,endY):
      pixel=getPixel(myPict,x,y)
      greyValue=

1 个答案:

答案 0 :(得分:0)

没关系解决它:)

def whiteBalanceBonus():
  File=pickAFile()
  myPict=makePicture(File)
  startX=requestInteger("Enter the value of the first 'X' Coordinate in the range")
  startY=requestInteger("Enter the value of the first 'Y' Coordinate in the range")
  endX=requestInteger("Enter the value of the last 'X' Coordinate in the range")
  endY=requestInteger("Enter the value of the last 'Y' Coordinate in the range")
  for x in range(startX,endX):
    for y in range(startY,endY):
      pixels=getPixel(myPict,x,y)
      greyValue=(getRed(pixels)+getGreen(pixels)+getBlue(pixels))/3
      redAdjust=(greyValue)/float(getRed(pixels))
      greenAdjust=(greyValue)/float(getGreen(pixels))
      blueAdjust=(greyValue)/float(getBlue(pixels))
  for px in getPixels(myPict):
    if (distance(white,getColor(px))>10):
      setRed(px,getRed(px)*redAdjust) 
      setGreen(px,getGreen(px)*greenAdjust)
      setBlue(px,getBlue(px)*blueAdjust)
  repaint (myPict)
相关问题