在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.:这是一个普遍的疑问,而不是一个特定问题的问题。答案 0 :(得分:3)
这实际上取决于你想对这些数据做些什么 一些OpenCV操作在单个像素平面上更容易,但其他操作可能是多通道导向的。
我猜想单个平面(C1
)更适合大多数情况,尽管您可以使用cv::reshape()
轻松切换表示。实际上,选择任何一个并使用reshape()
生成同一内存的另一个视图。