转换Mat矩阵

时间:2014-02-01 12:10:34

标签: c++ opencv matrix computer-vision

我正在使用C ++和opencv。当我将矩阵A与另一个矩阵B相乘时,我必须获得变换矩阵。但矩阵B需要在将其乘以A之前进行更改。如果B是2x3矩阵,则需要将其更改为3x3,前两行包含与原始B矩阵相同的元素,但最后一行具有全1的矩阵。更简单的说法,我需要在原始B矩阵中添加最后一行1。我想知道我是否可以通过任何特定的Mat矩阵运算来实现这一点。三江源

2 个答案:

答案 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);

您应该查看Mat type documentation