我有1个矩阵(3通道)-> cv :: Mat通道[3];
&3矩阵(1channel)-> cpu_filter0,cpu_filter90,cpu_filter120
以前我做过这样的事情,
cv::Mat cpu_filter0,cpu_filter90,cpu_filter120
cv::Mat channels[] = {cpu_filter0,cpu_filter90,cpu_filter120}
但是现在我想这样做
cv::Mat cpu_filter0,cpu_filter90,cpu_filter120
cv::Mat channels3[3];
channels[0] = &cpu_filter0, channels[1] = &cpu_filter90, channels[0] = &cpu_filter120;
或通过
cv::Mat channels3[] = {&cpu_filter0_0,&cpu_filter120_120,&cpu_filter240_240};
想知道什么是正确的方法吗?
答案 0 :(得分:2)
您是说您使用cv::Mat channels[3];
来创建多渠道矩阵吗?因为这不是这样做的,所以将创建具有3个矩阵的c样式数组。
首先,请确保您熟悉该语言(C ++)和(C样式)数组的工作方式(我发现this tutorial,但我没有读过它)。
然后,阅读“详细说明” here段落。
总结起来,有多种创建cv :: Mat的方法,例如:
cv::Mat m(10, 10, CV_32FC3);
这将创建一个具有3个32位浮点数通道的10x10矩阵。可以找到其他值here。只需在所需的频道数上添加“ C”即可。
现在,如何通过它们作为参考?一如既往:
void my_func(cv::Mat ¶m) {
// do stuff
}
// in another function
cv::Mat m(10, 10, CV_32FC3);
my_func(m);