javacv中cvScalar构造函数的四个参数的含义是什么?
有人能解释一下javacv中cvScalar方法的四个参数(双d、双d1、双d2、双d3)的含义吗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
如何在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