パーソナルブログメモリ

a = [1, 1]
for _ in "*" * 999: a += [sum(a[-2:])]
print(a)

画像変換

2018-06-20 | プログラムをマスター計画2020
構想
サッカーの画像を平面に変換してみる。
予めポイントとなる点を調べる。
変換は先画像から元画像の点を求める。
元画像は点からではなく平行視線とする。

kaiseki.png


field.png


座標の取得はgimpを使いました。

from PIL import Image, ImageDraw, ImageFilter

im1 = Image.open('./field.png')
im2 = Image.open('./kaiseki.png')

p1=(291,215)
#va1=(292-134,0)
vx=134-291
#vb1=(0,320-82)
vy=478-215

p2=(512,219)
va2=(183-512,182-219)
vb2=(144-512,363-219)

def getPoint(an,bn):
    global p2,va2,vb2
    px,py=p2
    ax,ay=va2
    bx,by=vb2
    return px+ax*an+bx*bn,py+ay*an+by*bn

h1=im1.height
w1=im1.width
h2=im2.height
w2=im2.width
for x in range(w1):
    for y in range(h1):
        px,py=p1
        #px+vx*an=x
        an=(x-px)/vx
        #py+vy*bn=y
        bn=(y-py)/vy
        gx,gy=getPoint(an,bn)
        if gx>=0 and w2>gx and gy>=0 and h2>gy:
            im1.putpixel((x,y),im2.getpixel((gx,gy)))
im1.show()


最初の画像はコーナーポストから水平、垂直のベクトル


別の3点から


計算式は独自で作成してみました。
4点必要なのかも...

最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。