我正在使用带有 C++ 的 opencv 库,并且我正在尝试计算包含在中的点的总和vector<Point2f> difference
点类具有 x 属性,即float。
float pointSumX(Point2f pt1,Point2f pt2)\n{\n return (pt1.x + pt2.x);\n}\nRun Code Online (Sandbox Code Playgroud)\n\n我如上定义了函数,并从如下所示的accumulate 中调用它。但它会引发错误。
\n\nfloat avgMotionX = accumulate(difference.begin(),difference.end(),0,pointSumX);\nRun Code Online (Sandbox Code Playgroud)\n\n错误是:
\n\n\n\n\n错误:无法将 \xe2\x80\x98__init\xe2\x80\x99 从 \xe2\x80\x98int\xe2\x80\x99 转换为 \xe2\x80\x98cv::Point_\xe2\x80\x99 __init = __binary_op( __init, *__first);
\n
注意:我使用的是C++11
\nfloat pointSumX(Point2f pt1, Point2f pt2)
Run Code Online (Sandbox Code Playgroud)
应该
float pointSumX(float lhs, const Point2f& rhs)
{
return lhs + rhs.x;
}
Run Code Online (Sandbox Code Playgroud)
lhs累加器也是如此。
另请注意,您应该调用它
std::accumulate(difference.begin(), difference.end(), 0.f, pointSumX); // 0.f instead of 0
Run Code Online (Sandbox Code Playgroud)
归float而不归int。