在不同的行上打印 Mat 矩阵
Posted
技术标签:
【中文标题】在不同的行上打印 Mat 矩阵【英文标题】:Printing Mat matrix on different lines 【发布时间】:2014-02-01 11:27:03 【问题描述】:我正在使用 C++。我想在不同的行上打印 Mat 对象的矩阵,如下所示:
我现在拥有的是
cout << m <<endl <<endl;
有人可以帮忙吗?
【问题讨论】:
对不起,我不知道为什么最后一行没有出现。这是 cout 我修正了格式,但你能解释一下 m 或 matrix_f 是什么(声明)吗? 对不起,我忘了提。 "matrix_f" 是 Mat 对象的名称(Mat matrix_f;) 您是否只有一个 Mat 对象并且想要将其打印出来,或者您有多个,并且需要像您在问题中显示的棋盘图案那样打印出来?跨度> 我将有 3 个 Mat 矩阵,需要像命令行中的图片那样打印出来 【参考方案1】:在这种情况下(指 cmets),您需要逐行打印矩阵。使用 m.row() 和 m.at()。假设您有图像中的 3x3 矩阵:
for (int i = 0; i < 3; ++i)
Mat row1 = m1.row (i);
Mat row2 = m2.row (i);
Mat row3 = m3.row (i);
// this can be replaced by a loop, I spell it out for the sake of clearness
cout << row1.at(0, 0) << " " << row1.at (0, 1) << " " << row1.at (0, 2) << "\t"
<< row2.at(0, 0) << " " << row2.at (0, 1) << " " << row2.at (0, 2) << "\t"
<< row3.at(0, 0) << " " << row3.at (0, 1) << " " << row3.at (0, 2) << endl;
【讨论】:
【参考方案2】:如果您想将其打印到命令行,我建议您查看 OpenCV: Matrix Iteration
如果您经常这样做,虽然不是很推荐,但您可以派生自己的 Matrix 类并覆盖 <<
运算符以按照您想要的方式打印它(如上面的链接中所示)
【讨论】:
以上是关于在不同的行上打印 Mat 矩阵的主要内容,如果未能解决你的问题,请参考以下文章