我想知道如何将矩阵作为函数中的可选参数传递。如果未提供参数,则将其设置为一个单位矩阵。
如果我做类似的事情
Mat function(const Mat &I, Mat &matrix=Mat::eye(2, 3, CV_32F))
{
/// some code
return matrix;
}
然后我得到以下错误:
在此先感谢您的任何建议。
最佳答案
您遇到了这个问题,因为C++ does not allow a temporary (the default value in this case) to be bound to non-const reference.
您有三个(至少)选择:
Mat function(const Mat &I, const Mat & matrix = Mat::eye(2, 3, CV_32F))
要么
Mat function(const Mat &I, Mat const & matrix = Mat::eye(2, 3, CV_32F))
要么
Mat function(const Mat &I, Mat matrix = Mat::eye(2, 3, CV_32F))
或如berak所说,您可以将默认值设为空Mat,然后使用
Mat::empty()
进行测试:Mat function(const Mat &I, Mat & matrix = Mat())