OpenCV中的多通道或多列矩阵

时间:2017-01-18 14:12:27

标签: c++ opencv matrix

在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.:这是一个普遍的疑问,而不是一个特定问题的问题。

1 个答案:

答案 0 :(得分:3)

这实际上取决于你想对这些数据做些什么 一些OpenCV操作在单个像素平面上更容易,但其他操作可能是多通道导向的。

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