3

写真のどこからでも三角形の領域を新しい空白の写真にコピーする python 関数を作成しようとしています。画像から新しい空の画像に長方形の領域をコピーできますが、三角形をコピーする方法がわかりません。それは私が持っているものですが、長方形の領域のみをコピーします。面倒で複雑すぎるように見える場合は申し訳ありませんが、Pythonでの記述方法を始めたばかりです。

  def copyTriangle():
     file=pickAFile()
     oldPic=makePicture(file)
     newPic=makeEmptyPicture(getWidth(oldPic),getHeight(oldPic))
     xstart=getWidth(oldPic)/2
     ystart=getHeight(oldPic)/2
     for y in range(ystart,getHeight(oldPic)):
         for x in range(xstart,getWidth(oldPic)):
           oldPixel=getPixel(oldPic,x,y)
           colour=getColor(oldPixel)
           newPixel=getPixel(newPic,x,y)
           setColor(newPixel,colour)
4

2 に答える 2

2

例のようにピクセルごとに実行する場合は、三角形のピクセルをコピーするだけです。ほとんどの場合、これは三角形をどのように定義するかによって異なります。

最も単純な三角形は、次のように、x範囲(内側のループ)をy値(外側のループ)に依存させることです。

for y in range(ystart, ystart+getHeight(oldPic)):
    for x in range(xstart, xstart + int( getWidth(oldPic)*((y-ystart)/float(getHeight)):

より一般的には、同じxループとyループを保持してから、コピーコマンドをifブロックに配置して、ポイントが三角形内にあるかどうかを確認できます。

これ以外にも、マスクなどを使用してこれを行うためのはるかに効率的な方法があります。

また、ここでもy範囲をに変更しましたrange(ystart, ystart+getHeight(oldPic))。これは、開始位置に依存しない高さでおそらく必要なものだと思います。

于 2013-01-13T03:46:36.593 に答える