使用自定义对象累积

时间:2016-10-04 19:59:33

标签: c++ opencv c++11

我正在使用带有C ++的opencv库,我正在尝试计算vector<Point2f> difference

中包含的点的总和

Point类具有x属性float

float pointSumX(Point2f pt1,Point2f pt2)
{
    return (pt1.x + pt2.x);
}

我定义了上面的功能,并从下面显示的累积中调用它。但它会引发错误。

float avgMotionX = accumulate(difference.begin(),difference.end(),0,pointSumX);

错误是:

  

错误:无法将'__init'从'int'转换为'cv :: Point_'__ init = __binary_op(__ init,* __ first);

注意:我正在使用C ++ 11

1 个答案:

答案 0 :(得分:2)

float pointSumX(Point2f pt1, Point2f pt2)

应该是

float pointSumX(float lhs, const Point2f& rhs)
{
    return lhs + rhs.x;
}

因为lhs是累加器。

另请注意,您应该将其称为

std::accumulate(difference.begin(), difference.end(), 0.f, pointSumX); // 0.f instead of 0

返回float而不是int