如何从c ++中的3X3矩阵中读取一行?

时间:2017-04-28 11:41:21

标签: c++ matrix

我有一个带有值的3X3矩阵。

1,0,0,

0,1,0,

0,0,1

我只对这个矩阵的最后一行感兴趣(0,0,1)。

那我怎么只读最后一行?

我正在使用c ++并使用opencv。

编辑:

对于模糊的问题感到抱歉。

所以我有这段代码

double rotation[] = { 1, 0, 0,
                      0, 1, 0,
                      0, 0, 1 };
Mat rotation_matrix(3, 3, CV_64FC1, rotation);

我想将最后一行存储在变量中,以便我可以对它们执行一些计算。

我知道下面的代码有效,但还有更好的解决方案吗?

double m20 = rotation_matrix.at<double>(2, 0);
double m21 = rotation_matrix.at<double>(2, 1);
double m22 = rotation_matrix.at<double>(2, 2);

1 个答案:

答案 0 :(得分:0)

有几种方法可以做到这一点。

获取指向可以像3元素数组一样使用的最后一行的指针:

double* last_row = rotation_matrix.ptr<double>(2);

使用rotation_matrix创建一个新的1x3 Mat对象,共享最后一行:

Mat last_row = rotation_matrix.row(2);

与上面相同,但最后一行是复制而不是共享:

Mat last_row = rotation_matrix.row(2).clone();

选择你最喜欢的那个。