我有两个2x3矩阵A和B-每个矩阵都是仿射变换的。我需要将A和B组合成一个C矩阵,它将A和B的仿射变换组合成一个矩阵。
我要怎么把它们相乘呢?
A_B还是B_A?
不同的是,要么是A或B被转置,要么它根本就没有什么区别?
我读到了另一个解决方案,就是使用3x3矩阵并将其复制到前两行,并且只使用结果中的前两行。但是,如果是A_B还是B_A,问题也是一样的。
此外,是否有一种简单的方法可以在OpenCV中实现这一点,或者我是否需要像上面所描述的那样实现每个步骤?
发布于 2017-01-27 13:37:31
以下函数将这两个矩阵组合在一起:
Mat AffineTransform::concatenateMatrix(Mat first, Mat second){
Mat mul1 = Mat::eye(3, 3, CV_64F);
Mat mul2 = Mat::eye(3, 3, CV_64F);
Mat x_;
Mat temp_inv_;
Mat mul_r;
first.convertTo(temp_inv_, CV_64F);
second.convertTo(x_, CV_64F);
temp_inv_.row(0).copyTo(mul1.row(0));
temp_inv_.row(1).copyTo(mul1.row(1));
x_.row(1).copyTo(mul2.row(1));
x_.row(0).copyTo(mul2.row(0));
try{
mul_r = mul1*mul2;
}
catch (Exception& e){
const char* err_msg = e.what();
cout << err_msg;
}
mul1.release();
mul2.release();
temp_inv_.release();
return mul_r;
}https://stackoverflow.com/questions/40306194
复制相似问题