我有一个带有值的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);
答案 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();
选择你最喜欢的那个。