在不同的行上打印 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 类并覆盖 &lt;&lt; 运算符以按照您想要的方式打印它(如上面的链接中所示)

【讨论】:

以上是关于在不同的行上打印 Mat 矩阵的主要内容,如果未能解决你的问题,请参考以下文章

opencv中 Mat矩阵申明形式

顺时针打印矩阵

顺时针打印矩阵

我应该为nmds使用什么类型的矩阵

矩阵乘法与 mpi

顺时针打印矩阵 按圈打印 java