介绍这两个函数使用方法及原理的文章及官方文档有很多,但发现存在不少坑,总结如下:
使用getPerspectiveTransform()函数得到的射影变换矩阵的type类型是CV_64F (据说跟系统有关,未验证,我的是64位的系统);进行对应乘操作时,需要做类型转换Mat*.convertTo(Mat*, CV_32F), 否则会报类型不匹配的错误,或者计算结果不对。
不少文章在介绍原理的时候,对应的点对变换关系是P0 = P1 * H,而getPerspectiveTransform()计算得到的变换矩阵H,实际使用时,点对的对应关系是P0 = H * P1。
在计算射影变换矩阵的逆矩阵时,需要将矩阵类型转换回CV_64F后,再进行取逆H.inv()操作;同样,使用的时候,又需要将其转换回CV_32F。