cv-仿射變換

import cv2
import numpy as np
import  PIL

def get_3rd_point(a, b):
    direct = a - b
    return b + np.array([-direct[1], direct[0]], dtype=np.float32)

src=np.array([[7,5],[7,2],[4,2]])#width*height
dst=np.array([[3,2],[3,1],[2,1]])#width*height
#dst=np.array([[6,3],[6,0],[3,0]])#width*height
trans = cv2.getAffineTransform(np.float32(src), np.float32(dst))
print(trans)

input=np.zeros((9,9),dtype=np.float32)
input[2,4:8]=100.0
input[3:6,4]=100.0


print(input)

output = cv2.warpAffine(
    input,
    trans,
    (int(5), int(6)),#width*height
    flags=cv2.INTER_LINEAR)

print(output)

[[ 3.33333333e-01 -0.00000000e+00  6.66666667e-01]
 [-7.93016446e-18  3.33333333e-01  3.33333333e-01]]
[[  0.   0.   0.   0.   0.   0.   0.   0.   0.]
 [  0.   0.   0.   0.   0.   0.   0.   0.   0.]
 [  0.   0.   0.   0. 100. 100. 100. 100.   0.]
 [  0.   0.   0.   0. 100.   0.   0.   0.   0.]
 [  0.   0.   0.   0. 100.   0.   0.   0.   0.]
 [  0.   0.   0.   0. 100.   0.   0.   0.   0.]
 [  0.   0.   0.   0.   0.   0.   0.   0.   0.]
 [  0.   0.   0.   0.   0.   0.   0.   0.   0.]
 [  0.   0.   0.   0.   0.   0.   0.   0.   0.]]
[[  0.   0.   0.   0.   0.]
 [  0.   0. 100. 100.   0.]
 [  0.   0. 100.   0.   0.]
 [  0.   0.   0.   0.   0.]
 [  0.   0.   0.   0.   0.]
 [  0.   0.   0.   0.   0.]]

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章