我有一个矩阵(3通道) -> cv::Mat channels3;
&3矩阵(1通道) -> 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};想知道什么是正确的方法吗??
发布于 2018-09-18 10:07:20
你是说你用cv::Mat channels[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);https://stackoverflow.com/questions/52383763
复制相似问题