0

我今天偶然发现了这段代码,我似乎无法弄清楚以下声明的作用:

Mat channel[3];

通道[3] 用于将图像分割成单独的通道。我对编程并不陌生,但对 C++ 语法相当生疏。有人可以帮我理解这段代码的作用吗?

例子:

Mat input = someimage;
Mat channel[3];
split(input, channel);
imshow("Red", channel[0]);  
imshow("Green", channel[1]);
imshow("Blue", channel[2]); 

更新:

我现在意识到这个问题的平庸。来自 C# 和 Java,我尝试使用Mat[3] 通道创建数组,这显然在 C++ 中不起作用。多谢你们!

4

3 回答 3

2

Mat channel[3]正在声明一个由 3 个对象组成的数组,Mat这些对象的索引从 0 到 2。也就是说,即channel[0]a Matchannel[1]是 a differentMat等等。

在这种情况下,您有一个分配给变量的图像input(在 C++ 的 OpenCV API 中,图像被管理为具有类的矩阵Mat)。Mat您在 array 中声明 3 s channel,然后使用该split函数将输入图像的 RGB 通道分成三个不同的图像,每个图像一个通道。最后,imshow显示每个结果图像的窗口。

于 2013-09-24T08:51:02.423 回答
1

有什么看不懂的?

Mat它是一个包含 3 个元素的类型数组。所以Mat只是一种类型。

如果您不知道声明数组的语法是什么样的,那么您可能应该在询问之前查看基本的 C 书籍。

于 2013-09-24T08:50:04.887 回答
0

它将字符串分成不同的通道。我不太习惯 OpenCV,但红色、绿色和蓝色分别映射到 [0]、[1]、[2]。

于 2013-09-24T08:51:03.897 回答