1

このような

http://imgur.com/a/rPyKb

これは私が持っているものですが、機能していません。その理由はわかりません。

def mirrorDiagonal(picture):
  for sourceX in range(0,getWidth(picture)):
    for sourceY in range (0,getHeight(picture)):
      pex=getPixel(picture,sourceY,sourceX)
      pix=getPixel(picture, sourceX,sourceY)
      color=getColor(pix)
      setColor(pex,color)
4

2 に答える 2

2

私が間違っていたので、この投稿を編集しました。

Janが言ったように、画像の半分を残したい場合は、すべてのピクセルを上書きしないことを考える必要があります。

次のようになります。

def mirrorDiagonal(picture):
    for sourceX in range(0,getWidth(picture)):
        for sourceY in range (sourceX,getHeight(picture)):
            pex=getPixel(picture,sourceY,sourceX)
            pix=getPixel(picture, sourceX,sourceY)
            color=getColor(pix)
            setColor(pex,color)

それでも、どの対角線を反転させたいかを考えたいと思うかもしれません。

于 2012-10-31T21:32:17.103 に答える
1

あなたが青色の位置 (x,y)=(7,8) にいるとしましょう。アルゴリズムは (8,7) (緑色) ピクセルを青色に変えます。ループがポイント (8,7) に到達すると、以前の割り当てから青色が検出され、元の色 (緑色) がなくなります。その結果、右上の対角線は変更されず、左下に反映されます。

左下の元の値を復元するには、それらをどこかに保存し、x > y の場合に使用する必要があります (図の左下のセクション)。

[編集] 画像のジオメトリによっては、変換 (x,y) -> (y,x) が存在しない点を指す場合があることに注意してください。50px x 100px の画像を考えてみましょう。ポイント (50,100) にいるとき、元の画像に存在しないピクセル (100,50) を呼び出して色を変更します。

于 2012-10-31T21:07:27.067 に答える