【问题标题】:Printing Mat matrix on different lines在不同的行上打印 Mat 矩阵
【发布时间】: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 矩阵,需要像命令行中的图片那样打印出来

标签: c++ opencv computer-vision 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; 运算符以按照您想要的方式打印它(如上面的链接中所示)

    【讨论】:

      猜你喜欢
      • 2011-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多