如何将cv::Scalar分配给cv::Mat?
How to assigne a cv::Scalar to cv::Mat?
使用OpenCV中实现的class Scalar,没看懂这段代码有什么区别:
Mat test;
test = Scalar::all(0);
还有这个:
Mat test = Scalar::all(0);
^
我的问题是为什么第一个赋值正确而第二个赋值不正确?
以Vec<_Tp,n>
为参数的Mat
构造函数的声明是
template<typename _Tp, int n>
explicit Mat(const Vec<_Tp, n>& vec, bool copyData=true);
cv::Scalar
被视为 Vec<_Tp,4>
因此您可以将 Scalar
以 explicit 方式传递给 Mat
构造函数 Class obj(parameter);
不是 Class obj = parameter;
所以调用
Mat test(Scalar::all(0));
使用OpenCV中实现的class Scalar,没看懂这段代码有什么区别:
Mat test;
test = Scalar::all(0);
还有这个:
Mat test = Scalar::all(0);
^
我的问题是为什么第一个赋值正确而第二个赋值不正确?
以Vec<_Tp,n>
为参数的Mat
构造函数的声明是
template<typename _Tp, int n>
explicit Mat(const Vec<_Tp, n>& vec, bool copyData=true);
cv::Scalar
被视为 Vec<_Tp,4>
因此您可以将 Scalar
以 explicit 方式传递给 Mat
构造函数 Class obj(parameter);
不是 Class obj = parameter;
所以调用
Mat test(Scalar::all(0));