我今天偶然发现了这段代码,我似乎无法弄清楚以下声明的作用:
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 ++中不起作用。谢谢你们!
答案 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]。