文章目录Scalar定义:使用:情况1 :通道创建和打印情况2 :打印相同通道数量的矩阵图像

Scalar定义:

首先,scalar这个词意味着标量,但scalar包含多个值,常见的情况是像向量一样。 怎么了? 我很困惑。 先平息我们的混乱,先看看Scalar的定义:

typedefstructscalar { doubleval [4]; }Scalar; 可以看到,Scalar是由长度为4的数组元素组成的结构,Scalar最多可以包含4个值,未提供的值默认为0。

使用: Scalar的典型使用场景如下。

matm (7,7,CV_32FC2,Scalar ) ) 1,3 ); 上面的代码说明了创建一个图像矩阵,其中每个通道的值为“1,3”,深度为32,7行7列。 CV_32F指示每个元素的值类型为32位浮点数,C2指示信道的数目为2,scalar (1,3 )指示矩阵的每个元素被指派(1,3 ),其中第一个信道的值都是

情况1 :创建和打印通道

执行以下代码,可以看到最后一个矩阵是4通道。 但是,由于初始化时只给定了3个通道的值,所以第4个通道的值默认为0。

# include iostream # include math.h # include opencv2/opencv.HPP # include opencv2/highgui.HPP # include opencv2/high voidscalar_demo1({matm ) 4、4、CV_32FC2、scalar ) 1、3 ) }; cout M endl; }void scalar_demo2() matm ) 4、4、CV_32FC3、scalar ) 1、2、3 ) ); cout M endl; }void scalar_demo3() matm ) 4、4、CV_32FC4、scalar ) 1、2、3 ) ); cout M endl; }intmain(void ) {//resize_img; //convert_color_space (; scalar_demo1(; cout ‘ * * * * * * * * * * * * * * * * * * * * * * * * * endl; scalar_demo2(; cout ‘ * * * * * * * * * * * * * * * * * * * * * * * * * endl; scalar_demo3(; 返回0; )情况2 )打印相同通道数量的矩阵图像。 它将每个通道的值放在一起,并指定给相同通道数量的矩阵元素。

# include iostream # include math.h # include opencv2/opencv.HPP # include opencv2/highgui.HPP # include opencv2/high voidscalar_demo4({matblue_m ) 256,256,CV_8UC3,scalar ) 255,0,0 ) }; mat green _ m (256,256,CV_8UC3,Scalar ) ) 0,255,0 ); mat red _ m (256,256,CV_8UC3,Scalar ) ) 0,0,255 ); imshow(‘blue ‘,blue_m ); //WaitKey(0); imshow(‘green ‘,green_m ); //WaitKey(0); imshow(‘red ‘,red_m ); 维客(0; }intmain(void ) {scalar_demo4); 返回0; }