我有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};
想知道这是怎么回事?
你是说你使用cv::Mat channels[3];
创建一个多通道矩阵?因为这不是这个,所以这会创建一个带有3个矩阵的c风格数组。
首先,确保您熟悉语言(C ++)以及如何(C风格)数组工作(我找到了this tutorial,但我还没有读过它)。
然后,阅读段落“详细说明”here。
总结一下,有不同的方法来创建一个cv :: Mat,例如:
cv::Mat m(10, 10, CV_32FC3);
这将创建一个10x10矩阵,其中包含3个32位浮点数通道。其他值可以找到here。只需为所需数量的频道添加“C”即可。
现在,如何将它们作为参考传递?一如既往:
void my_func(cv::Mat ¶m) {
// do stuff
}
// in another function
cv::Mat m(10, 10, CV_32FC3);
my_func(m);