Mat名称[x]究竟给出了什么?

时间:2013-09-24 08:46:17

标签: c++ opencv

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

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] channel 来创建数组,这显然在C ++中不起作用。谢谢你们!

3 个答案:

答案 0 :(得分:2)

Mat channel[3]声明了一个由0到2索引的3 Mat个对象的数组。也就是说,channel[0]Mat,{{1 }}是一个不同的channel[1]等等。

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

答案 1 :(得分:1)

你在那里听不到什么?

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

如果您不知道声明数组的语法是什么样的,那么在询问此处之前,您应该先查看一本基本的C Book。

答案 2 :(得分:0)

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