请问有人可以解释javacv中cvScalar(double d,double d1,double d2,double d3)方法的四个参数的含义吗?
如何在cvScalar中表示黑色?
最佳答案
cvScalar只是一个方便的容器,用于存储1、2、3或4个浮点值。
这些元组中数据的含义留给cvScalar的用户使用。
例如,它们可以用于保存平面中的点(2元组),矩形(4元组),RGB颜色(3元组),3D世界中的点(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
等。关于java - javacv中的cvScalar构造函数的四个参数是什么意思?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12968082/