我想知道如何将矩阵作为函数中的可选参数传递。如果未提供参数,则将其设置为一个单位矩阵。

如果我做类似的事情

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())

08-27 00:40
查看更多