【发布时间】:2016-05-18 11:10:52
【问题描述】:
OPENCV 中的许多函数都使用 InputArray 和 OutputArray 作为函数参数。比如OPENCV中的霍夫变换函数:
void HoughLines(InputArray image, OutputArray lines, double rho, double theta, int threshold, double srn=0, double stn=0 )
在函数内部,我们必须使用 InputArray 函数getMat 将其赋予真正的输入数组类型。例如,Mat image= _image.getMat()。同样,我们必须使用copyTo 函数将真正的输出数组转换为OutputArray 格式。例如,Mat(lines).copyTo(_lines)。
我的问题是为什么 OPENCV 以这种方式设计其函数签名。以霍夫函数为例,如果我们使用以下函数签名:
void HoughLines(Mat &image, std::vector<Vec2f> &lines, double rho, double theta, int threshold, double srn=0, double stn=0 )
我希望这样做会更好,因为它可以消除额外的不必要的复制操作。
【问题讨论】:
-
我希望这样做会更好,因为这样做可以消除额外的不必要的复制操作。实际上不涉及复制。