如何将cv :: Scalar赋予cv :: Mat?

时间:2018-02-22 20:34:15

标签: c++ opencv3.0

使用在OpenCV中实现的Scalar类,我不明白这段代码有什么区别:

Mat test;
test = Scalar::all(0);

和此:

Mat test = Scalar::all(0);
         ^

我的问题是为什么第一个作业是正确的而第二个不是?

1 个答案:

答案 0 :(得分:2)

Mat为参数的Vec<_Tp,n>构造函数声明

  template<typename _Tp, int n>
  explicit Mat(const Vec<_Tp, n>& vec, bool copyData=true);

cv::Scalar被视为Vec<_Tp,4>,因此您可以通过显式方式Scalar而不是{{}将Mat传递给Class obj(parameter);构造函数1}}所以调用

Class obj = parameter;