我正在使用带有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
答案 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
。