【问题标题】:Multi-channel or multi-colum matrix in OpenCVOpenCV中的多通道或多列矩阵
【发布时间】:2017-06-02 23:09:51
【问题描述】:

在 OpenCV 中,我正在处理一些如下所示的数据:

//label     A    B    C
//   0      1    2    0
//   1      2    1    1
//   2      3    0    4
//   3      4    2    3
//   4      1    1    1

此数据(A、B 和 C 列)可以存储在单通道 5x3 矩阵或具有三个通道的 5x1 矩阵中。更具体地说,对于这个例子,data 的两个定义都可以完成这项工作:

cv::Mat data(5, 3, CV_8UC1);
cv::Mat data(5, 1, CV_8UC3);

我的问题是:是否有理由从上面选择一个声明而不是另一个?

P.S.:这是一个普遍的疑问,而不是针对特定问题的问题。

【问题讨论】:

  • 如果可以有4列以上,最好按照第一种方法。
  • 两种方法之间是否存在一些性能差异?
  • 不,数据在内存中的布局方式相同。

标签: c++ opencv matrix


【解决方案1】:

这实际上取决于您要如何处理这些数据。
一些 OpenCV 操作在单个像素平面上更容易执行,但其他操作可能面向多通道。

我猜想单平面 (C1) 会更适合大多数情况,尽管您可以使用 cv::reshape() 轻松切换表示。事实上,选择任何一个并使用reshape() 来生成相同内存的另一个视图。

【讨论】:

    猜你喜欢
    • 2016-05-24
    • 2014-02-01
    • 2012-09-02
    • 2011-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多