C++ 如何通过引用传递opencv mat
我有1个矩阵(3通道)->cv::Mat通道[3] &3矩阵(1通道)->cpu_过滤器0、cpu_过滤器90、cpu_过滤器120 以前我做过这样的事情C++ 如何通过引用传递opencv mat,c++,pass-by-reference,opencv3.0,C++,Pass By Reference,Opencv3.0,我有1个矩阵(3通道)->cv::Mat通道[3] &3矩阵(1通道)->cpu_过滤器0、cpu_过滤器90、cpu_过滤器120 以前我做过这样的事情 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::Ma
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频道[3]代码>创建多通道矩阵?因为这不是它所做的,所以它创建了一个包含3个矩阵的c样式数组
首先,确保您熟悉该语言(C++)以及(C风格)数组的工作原理(我发现了,但我没有读过)
然后,阅读“详细说明”一段
总而言之,创建cv::Mat有不同的方法,例如:
cv::Mat m(10, 10, CV_32FC3);
这将创建一个10x10矩阵,其中包含3个32位浮点数通道。可以找到其他值。只需为所需的频道数添加“C”
现在,如何将它们作为参考传递?一如往常:
void my_func(cv::Mat ¶m) {
// do stuff
}
// in another function
cv::Mat m(10, 10, CV_32FC3);
my_func(m);
是的,那帮了我很多忙!我认为这个答案遗漏了cv::Mat类的一个要点。它只是一个标题,下面有一个托管数组。它通常在赋值中使用浅拷贝,因此通过引用传递参数不会节省太多。该类是指针大小的2-3倍。