我正在使用C ++和opencv。当我将矩阵A与另一个矩阵B相乘时,我必须获得变换矩阵。但矩阵B需要在将其乘以A之前进行更改。如果B是2x3矩阵,则需要将其更改为3x3,前两行包含与原始B矩阵相同的元素,但最后一行具有全1的矩阵。更简单的说法,我需要在原始B矩阵中添加最后一行1。我想知道我是否可以通过任何特定的Mat矩阵运算来实现这一点。三江源
答案 0 :(得分:2)
您需要使用Mat::push_back,这会将元素添加到矩阵的底部。
例如
Mat A = (Mat_<uchar>(3,4) << 1, 2, 3, 4,\
5, 6, 7, 8,\
9, 10, 11, 12); // 3X4 matrix.
Mat B = (Mat_<uchar>(1,4) << 13, 14, 15, 16); // 1X4 matrix
A.push_back(B); // Now A become 4X4 matrix
答案 1 :(得分:1)
直接的方式,但可能不是最快或最漂亮的
Mat B_new(3,3,CV_32F);
B_new.row(0) = B.row(0);
B_new.row(1) = B.row(1);
B_new.row(2) = Mat::ones(1,3,CV_32F);