使用在OpenCV中实现的Scalar类,我不明白这段代码有什么区别:
Mat test;
test = Scalar::all(0);
和此:
Mat test = Scalar::all(0);
^
我的问题是为什么第一个作业是正确的而第二个不是?
答案 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;