使用opencv的透视变换矩阵自主坐标变换

参考博客

https://blog.csdn.net/cuixing001/article/details/80261189

感谢博主的用心总结,其中要注意的是:

注意矩阵运算形式:y=ax;

二维到三维矩阵运算的结果要将X和Y再除以Z,因为最终的位置也是2D的。

具体转换公式如下:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OpenCV中进行透视变换需要用到透视变换矩阵,也称为投影变换矩阵。该矩阵是一个3x3的矩阵,可以通过一组源点和目标点的对应关系来计算得到。下面是透视变换矩阵的推导过程: 假设有四个点A(x1,y1)、B(x2,y2)、C(x3,y3)、D(x4,y4)分别对应于图像中的四个角,在透视变换后,它们的位置变为A’(x1’,y1’)、B’(x2’,y2’)、C’(x3’,y3’)、D’(x4’,y4’)。 透视变换矩阵的计算公式如下: ``` H = cv2.getPerspectiveTransform(src, dst) ``` 其中,src是源点的坐标,dst是目标点的坐标透视变换矩阵的具体计算过程如下: 假设有如下矩阵: ``` [x1 y1 1 0 0 0 -x1*x1' -y1*x1'] [x1'] [x2 y2 1 0 0 0 -x2*x2' -y2*x2'] [y1'] [x3 y3 1 0 0 0 -x3*x3' -y3*x3'] [1 ] [x4 y4 1 0 0 0 -x4*x4' -y4*x4'] * [x2'] = A [0 0 0 x1 y1 1 -x1*y1' -y1*y1'] [y2'] [0 0 0 x2 y2 1 -x2*y2' -y2*y2'] [y2'] [0 0 0 x3 y3 1 -x3*y3' -y3*y3'] [1 ] [0 0 0 x4 y4 1 -x4*y4' -y4*y4'] [x3'] ``` 其中,A是一个8x1的矩阵,它可以通过将源点和目标点的坐标展开成矩阵形式得到,如下所示: ``` [x1'] [x1] [y1'] [y1] [1 ] = [ 1] [x2'] [x2] [y2'] [y2] [1 ] [ 1] [x3'] [x3] [y3'] [y3] [1 ] [ 1] [x4'] [x4] [y4'] [y4] [1 ] [ 1] ``` 通过以上两个公式,将A带入到第一个公式中,可以得到透视变换矩阵H的值,如下所示: ``` [x1' x2' x3'] [x1] [y1' y2' y3'] = [y1] [ 1 1 1 ] [ 1] ``` 其中,x1、y1、x2、y2、x3、y3可以通过src中的4个点坐标得到,x1'、y1'、x2'、y2'、x3'、y3'可以通过dst中的4个点坐标得到。 最后,通过得到的透视变换矩阵H,可以使用cv2.warpPerspective()函数进行图像变换
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值