2

私の目標は、画像サイズを 2 倍にして、左半分をグレースケールに変更し、右上半分の緑の値と右下半分の青の値を変更することです。グレースケールの教科書で見つけた値がありますが、それが実際に使用しているかどうかはわかりません。また、for ループを使用してこれらの異なる値のそれぞれをプログラムするのか、それとも別の何かを使用してプログラムするのかもわかりません

これまでのところ、私のコードは次のとおりです。

 def crazyPic(newGreen,newBlue,pic,file):
      show(pic)
      newPic = makeEmptyPicture(getWidth(pic)*2,getHeight((pic)*2
           for x in range(width):
              for y in range(height):
                  for px in getPixel(pic,0,100):
                  nRed = getRed(px) * 0.299
                  nGreen = getGreen(px) * 0.587
                  nBlue = getBlue(px) * 0.114
                  luminance = nRed + nGreen + nBlue
                  setColor(px,makeColor(luminance,luminance,luminance)
4

1 に答える 1

0

JESは学生向けに設計されたアプリケーションであるため、完全な回答をするべきではありませんが、3か月後には、他の人の参考として使用できる完全な動作サンプルを提供できると思います...

これは、あなたがやろうとしたことに近いはずです:

注: x と y に対する単純な二重ループのアプローチは正しいものでした。

def crazyPic(pic, newRed, newGreen, newBlue):

    w = getWidth(pic)
    h = getHeight(pic)
    new_w = w * 2
    new_h = h * 2
    newPic = makeEmptyPicture(w * 2, h * 2)

    for x in range(new_w):
      for y in range(new_h):
          new_px = getPixel(newPic, x, y)

          # Top-left: B&W
          if (x < w) and (y < h):
            px = getPixel(pic, x, y)
            nRed = getRed(px) * newRed #0.299
            nGreen = getGreen(px) * newGreen #0.587
            nBlue = getBlue(px) * newBlue #0.114
            luminance = nRed + nGreen + nBlue
            new_col = makeColor(luminance, luminance, luminance)

          # Top-right
          elif (y < h):
            px = getPixel(pic, x - w, y)
            nRed = getRed(px) * newRed
            new_col = makeColor(nRed, getGreen(px), getBlue(px))

          # Bottom-left
          elif (x < w):
            px = getPixel(pic, x, y - h)
            nGreen = getGreen(px) * newGreen
            new_col = makeColor(getGreen(px), nGreen, getBlue(px))

          # Bottom-right
          else:
            px = getPixel(pic, x - w, y - h)
            nBlue = getBlue(px) * newBlue
            new_col = makeColor(getGreen(px), getBlue(px), nBlue)

          setColor(new_px, new_col)

    return newPic

file = pickAFile()
picture = makePicture(file)
#picture = crazyPic(picture, 0.299, 0.587, 0.114)
# Here, with my favorite r, g, b weights
picture = crazyPic(picture, 0.21, 0.71, 0.07)

writePictureTo(picture, "/home/quartered.jpg")

show(picture)


出力 ( Antoni Tapesによる絵画):


ここに画像の説明を入力......から......ここに画像の説明を入力


ここにグレースケールに関するより詳細なスレッドがあります。


于 2013-06-29T08:01:53.113 に答える