学习资料参考:
方程法
由仿射矩阵可知,该矩阵中有6个未知数,所以一共需要六个方程来解6个未知数.(点击访问仿射矩阵)
那么也就是需要三个坐标转换前与转换后的相应坐标值才能构造出仿射矩阵。库函数提供了如何求解的办法,我们只需提供三个坐标点(前后共6个)即可。
示例
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
#include<iostream>
using namespace cv;
using namespace std;
int main() {
//原位置坐标
Point2f src[] = { Point2f(0,0),Point2f(200,0),Point2f(0,200) };
//变换后的坐标
Point2f dst[] = { Point2f(0,0),Point2f(200,0),Point2f(0,100) };
//计算仿射矩阵
Mat A = getAffineTransform(src, dst);
cout << A;
return 0;
}
计算结果
矩阵法
通俗讲,即使用矩阵乘法计算仿射矩阵。
但此方法需要我们自己计算出缩放矩阵或平移矩阵或旋转矩阵,比较繁琐。