Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javacv中cvScalar构造函数的四个参数的含义是什么?_Java_Javacv - Fatal编程技术网

javacv中cvScalar构造函数的四个参数的含义是什么?

javacv中cvScalar构造函数的四个参数的含义是什么?,java,javacv,Java,Javacv,有人能解释一下javacv中cvScalar方法的四个参数(双d、双d1、双d2、双d3)的含义吗 如何在cvScalar中表示黑色?cvScalar是4个双精度的通用数组。数据类型通常用于表示像素值,例如: CvScalar blue = CV_RGB(64, 64, 255); 在接受少于4个值的构造函数中,其余的double设置为0 cvGet2D是另一个以CvScalar形式返回像素值的函数 读取单个像素的最简单方法是使用cvGet2D()函数 CvScalar cvGet2D(常量C

有人能解释一下javacv中cvScalar方法的四个参数(双d、双d1、双d2、双d3)的含义吗


如何在cvScalar中表示黑色?

cvScalar是4个双精度的通用数组。数据类型通常用于表示像素值,例如:

CvScalar blue = CV_RGB(64, 64, 255);
在接受少于4个值的构造函数中,其余的double设置为0

cvGet2D是另一个以CvScalar形式返回像素值的函数

读取单个像素的最简单方法是使用cvGet2D()函数

CvScalar cvGet2D(常量CvArr*,int行,int列)

此函数接受三个参数:指向数据容器的指针(CVArr*)以及行和列位置的数组索引。数据容器可以是IplImage结构。像素的最上面一行是row=0,最下面一行是row=height-1

函数的作用是:返回一个C结构CvScalar,定义为

类型定义结构CvScalar { 双val[4]; } 标量

每个通道的像素值以val[i]为单位。对于灰度图像,val[0]包含像素>亮度。其他三个值设置为0。对于三通道BGR图像,蓝色=val[0],>绿色=val[1],红色=val[2]


cvScalar是4个双精度的通用数组。数据类型通常用于表示像素值,例如:

CvScalar blue = CV_RGB(64, 64, 255);
在接受少于4个值的构造函数中,其余的double设置为0

cvGet2D是另一个以CvScalar形式返回像素值的函数

读取单个像素的最简单方法是使用cvGet2D()函数

CvScalar cvGet2D(常量CvArr*,int行,int列)

此函数接受三个参数:指向数据容器的指针(CVArr*)以及行和列位置的数组索引。数据容器可以是IplImage结构。像素的最上面一行是row=0,最下面一行是row=height-1

函数的作用是:返回一个C结构CvScalar,定义为

类型定义结构CvScalar { 双val[4]; } 标量

每个通道的像素值以val[i]为单位。对于灰度图像,val[0]包含像素>亮度。其他三个值设置为0。对于三通道BGR图像,蓝色=val[0],>绿色=val[1],红色=val[2]


cvScalar只是一个方便的1、2、3或4浮点值容器。
此类元组中数据的含义由cvScalar的用户决定。
例如,它们可以用来保存平面中的点(2元组),矩形(4元组),RGB颜色(3元组),三维世界中的点(3元组)等。cvScalar系统地实现为4元组,未使用的值设置为0

要回答有关RGB黑色的问题,请执行以下操作:

cvScalar cBlack = new cvScalar(0, 0, 0, 0);
// BEWARE: the params for the cvScalar constructor are not in RGB order
//         it is:   new cvScalar(blue, green, red, unused)
//  note how the 4th scalar is unused.
或者,您可以使用CV_RGB()便利方法,如中所示:

CvScalar cBlack = CV_RGB(0, 0, 0);
// here the CV_RGB() arguments are in Red, Green, Blue order.
编辑:因为上面的示例是针对黑色的,因此所有颜色分量都具有相同的值,因此无法证明存储在CvScalar中的RGB分量的顺序与传统的红、绿、蓝顺序相反。
CV_RGB()
便利方法的参数按常规RGB顺序排列,但cvScalar中的存储按蓝色、绿色、红色顺序排列。
换句话说,CV_RGB的定义如下:

public static CvScalar CV_RGB(double r, double g, double b) {
    return cvScalar(b, g, r, 0);
}
或者还可以说,
cvScalar(0,1,130,0)
相当于
CV_RGB(130,1,0)
,即红色,略带绿色


除了CV_RGB(),当使用cvScalars作为颜色值时,可以方便地使用
cvScalar.Red()
cvScalar.Blue()
cvScalar.Green()
方法提取单个组件,而不必担心这些组件存储在哪里。该类还包括每个常用颜色的几个静态实例:
cvScalar.GRAY
cvScalar.YELLOW
cvScalar.BLUE
等。

cvScalar只是1、2、3或4个浮点值的方便容器。
此类元组中数据的含义由cvScalar的用户决定。
例如,它们可以用来保存平面中的点(2元组),矩形(4元组),RGB颜色(3元组),三维世界中的点(3元组)等。cvScalar系统地实现为4元组,未使用的值设置为0

要回答有关RGB黑色的问题,请执行以下操作:

cvScalar cBlack = new cvScalar(0, 0, 0, 0);
// BEWARE: the params for the cvScalar constructor are not in RGB order
//         it is:   new cvScalar(blue, green, red, unused)
//  note how the 4th scalar is unused.
或者,您可以使用CV_RGB()便利方法,如中所示:

CvScalar cBlack = CV_RGB(0, 0, 0);
// here the CV_RGB() arguments are in Red, Green, Blue order.
编辑:因为上面的示例是针对黑色的,因此所有颜色分量都具有相同的值,因此无法证明存储在CvScalar中的RGB分量的顺序与传统的红、绿、蓝顺序相反。
CV_RGB()
便利方法的参数按常规RGB顺序排列,但cvScalar中的存储按蓝色、绿色、红色顺序排列。
换句话说,CV_RGB的定义如下:

public static CvScalar CV_RGB(double r, double g, double b) {
    return cvScalar(b, g, r, 0);
}
或者还可以说,
cvScalar(0,1,130,0)
相当于
CV_RGB(130,1,0)
,即红色,略带绿色


除了CV_RGB(),当使用cvScalars作为颜色值时,可以方便地使用
cvScalar.Red()
cvScalar.Blue()
cvScalar.Green()
方法提取单个组件,而不必担心这些组件存储在哪里。该类还包括一些常见颜色的静态实例:
cvScalar.GRAY
cvScalar.YELLOW
cvScalar.BLUE
等。能否请您告诉我什么是相等的CV_RGB()va