我们在学习OpenCV 时,发现在构造 Mat 时,会有2个关键参数,一个 CvType,一个 Scalar。很多人不明白这2个参数的意思,所以在把别人例子拿来使用或自己写的的时候发现这个参数不知道该怎么填。本文就将 Scalar 参数详细的说明下。
Scalar 是一个配合 CvType 使用的参数,如果你不了解 CvType,可以先看看我写的 OpenCV 3.4 读懂 CvType 类型说明 了解什么是图像通道,CvType 的构造。
本文下列实例均是 JAVA 代码,其他语言实现类同
Scalar 构造器
1 | public class Scalar { |
可以看到有5个构造函数,参数也不复杂,很容易理解。除开 public Scalar(double[] vals)
这个数组入参的构造函数,其他4个构造函数分别是传入1个、2个、3个、4个 double 类型的构造函数,那么这些参数代表什么意思,他的取值范围是什么?
Scalar 参数的含义
Scalar 一定是与 CvType 结合使用的,他代表 CvType 中指定通道的值。如果您不了解 CvType,可以先看看我写的 OpenCV 3.4 读懂 CvType 类型说明 了解什么是图像通道,CvType 的构造。
构造说明:
- 构造函数的入参(值)的数量 <= 通道数量 [如果是2通道图像,用4个参数的构造函数,后面2个参数不起作用]
- 构造函数的入参(值)的数量 < 通道数量 时,未传入值的通道值为0
- 多通道图像时,入参顺序 new Scalar(B,G,R,alpha)
下面来看示例:
1 |
|
通过上边的例子,应该已经明白 Scalar 的意思了吧,就是通道的值
Scalar 参数的数据范围
处理 Alpha 通道值为 0~255 ,其他通道取值范围根据图像的位数(Bite)来决定。可以查看OpenCV 3.4 读懂 CvType 类型说明 了解什么是图像通道,CvType 的构造,后面后各 Bite 下通道的取值范围。