python opencv2 投影变换笔记

已知四个对应点,求投影矩阵

M = cv2.getPerspectiveTransform(src, target)

src是四个点的list:
[[121. 13.]
[433. 21.]
[ 58. 250.]
[497. 276.]]

target是要把src变换到以下四个点:
[[ 0. 0.]
[500. 0.]
[ 0. 281.]
[500. 281.]]

M是求出来的投影矩阵,3*3:
[[ 1.71880854e+00 4.56898473e-01 -2.13915514e+02]
[-4.35924710e-02 1.70010637e+00 -1.68266938e+01]
[ 9.94528404e-05 1.75161072e-03 1.00000000e+00]]

已知投影矩阵,求变换后的图片

result = cv2.warpPerspective(img, M, (0, 0))
cv2.imshow('result', result)

img是原图,result是用M投影变换后得到的图像

已知投影矩阵,求变换后的对应点

points = points.reshape(1, -1, 2).astype(np.float32)  # 二维变三维, 整形转float型, 一个都不能少
new_points = cv2.perspectiveTransform(points, M)
new_points = new_points.reshape(-1,2)

points是n个二维点,格式是numpy数组,shape为n*2。
一定要给他多加一维,然后转为float才行。
new_points是变换后的点,一定也要reshape回来。
参考:
大坑:perspectiveTransform
OpenCV Python cv2.perspectiveTransform

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值