【问题标题】:Colour averages within a specific range特定范围内的颜色平均值
【发布时间】:2017-10-11 20:34:01
【问题描述】:

我想使用用户输入确定的范围内像素的平均颜色来更改整个图片的白平衡。我正在使用名为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=

【问题讨论】:

    标签: python jes


    【解决方案1】:

    没关系解决它:)

    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)
    

    【讨论】:

      猜你喜欢
      • 2020-03-11
      • 1970-01-01
      • 1970-01-01
      • 2011-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多