BlendIMG и ChromaKey(), объясняющие эти функции и почему мои программы не будут работать

Всякий раз, когда я пытаюсь запустить программу в JES, такую ​​как эта, например, всякий раз, когда я помещаю что-либо в круглые скобки, программа не будет работать?! Что я делаю не так! когда я пытаюсь запустить программу и ввожу изображение (pict), она просто говорит об ошибке, имя не найдено глобально. защитное изображение (изображение):

также что не так с этим кодом, который я сделал ниже, они не будут работать, также можете ли вы подробно объяснить каждую часть моего кода, так как я знаю, что писать, но у меня проблемы с пониманием, что делать.

Кроме того, как мне написать функцию, используя оператор while, который, скажем, использует addLine() для добавления маршрута для нескольких маршрутов на карте с использованием ввода?

def startEnvironemnt(pict):
  a = pickAFile()
  pict = makePicture(a)
  sourceH = getHeight(pict)
  sourceW = getWidth(pict)
  canvas = makeEmptyPicture(sourceW, sourceH)
  show(canvas)
  show(pict)
  explore(pict)

программа 2

def chromeKey(pict)
  for x in range(0, getWidth(pict)):
    for y in range(0, getHeight(pict)):
      pix = getPixel(pict, x, y)
      if(getRed(pix) + getGreen(pix) < getBlue(pix)):
        setColor(pix, getColor(getPixel(canvas,x,y)))
  return pict

программа 3: предполагается написать программу для смешивания двух изображений, 1. смешать верхнюю треть 1-го изображения 2. затем смешать два изображения вместе в средней трети, 3. затем показать последнюю треть второго изображения

программа для установки исходных изображений одинакового размера

def blendImg():
  #mark on the moon
  a = pickAFile()
  source = makePicture(a)
  #WaterFall
  b = pickAFile()
  secondImg = makePicture(a)
  sHeight = getHeight(secondImg)
  sW = getWidth(secondImg)
  canvas = makeEmptyPicture(sHeight, sW)
  #Copy of pic 1, 94columns(1/3 of image)
  sourceX=0
  for targetX in range(0,94):
    sourceY=0
    for targetY in range(0, getHeight(source)):
      color = getColor(getPixel(source,sourceX,sourceY))
      setColor(getPixel(canvas,targetX,targetY),color)
      sourceY = sourceY + 1
    sourceX = sourceY + 1
   #actual blending
    blend = getWidth(source)-94
    sourceX=0
    for targetX in range(150,getWidth(source)):
      sourceY=0
      for targetY in range(0,getHeight(secondImg)):
        sPixel = getPixel(source,sourceX+94,sourceY)
        sImgPixel = getPixel(secondImg,sourceX,sourceY)
        newRed = 0.25*getRed(sPixel)+0.25*getRed(sImgPixel)
        newGreen = 0.25*getGreen(sPixel)+0.25*getGreen(sImgPixel)
        newBlue = 0.25*getGreen(sPixel)+0.25*getGreen(sImgPixel)
        nColor = makeColor(newRed,newGreen,newBlue)
        setColor(getPixel(canvas,targetX,targetY),nColor)
        sourceY = sourceY+1
      sourceX = sourceX+1
      sourceX=blend
      for targetY in range(94+blend,94+getWidth(secondImg)):
        sourceY=0
        for targetY in range(0,getHeight(secondImg)):
          color = getColor(getPixel(secondImg,sourceX,sourceY))
          setColor(getPixel(canvas,targetX,targetY),color)
          sourceY = sourceY + 1
        sourceX = sourceX + 1
    show(canvas)
    return(canvas)

person codeGeek    schedule 03.08.2014    source источник


Ответы (1)


Обычно вы хотите попытаться задать свои вопросы в stackoverflow, чтобы на каждый вопрос приходилось по одному вопросу.

Чтобы первая программа заработала, вам нужно сделать что-то вроде этого (не вводите >>>, это просто подсказка):

>>> picture = makePicture(pickAFile())
>>> startEnvironemnt(picture)

Обратите внимание, что в определении функции вы использовали pict, а в подсказке я использовал picture. Пока вы используете одно и то же имя в обоих местах подсказки, вы можете использовать любое незарезервированное слово, которое вам нравится. Если он говорит вам, что pict не определен, убедитесь, что вы присвоили ему значение, используя оператор присваивания, такой как pict = makePicture(pickAFile()), где-то в своем коде, прежде чем пытаться его использовать.

В программе 2 отсутствует двоеточие в конце первой строки, так что это вряд ли сработает.

Я думаю, вам следует отредактировать свой вопрос, чтобы выделить часть цикла while в отдельный вопрос.

person PrairieProf    schedule 07.08.2014