2016-10-04 1 views
0

으로 축적, 나는 float이다 x 속성을 가지고 vector<Point2f> difference사용 내가 C++과 OpenCV의 라이브러리를 사용하고 사용자 정의 개체

Point 클래스에 포함 된 포인트의 합계를 계산하기 위해 노력하고 있습니다.

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

위와 같이 함수를 정의하고 아래 표시된 누적 값에서 호출하십시오. 그러나 그것은 오류를 던집니다.

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

오류는 다음과 같습니다

error: could not convert ‘__init’ from ‘int’ to ‘cv::Point_’ __init = __binary_op(__init, *__first);

참고 : 나는 lhs

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

가 누적입니다해야한다 C++ 11

답변

2
float pointSumX(Point2f pt1, Point2f pt2) 

을 사용하고 있습니다. 당신이 float하지 int를 반환 할

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

를 호출해야하는 것도

참고.

+0

감사합니다. 이제 작동합니다. const 및 함수의 이유는 무엇입니까? – Bhoke

+2

@Bhoke : 복사본을 피하려면 값 대신 const 참조를 전달하십시오. ('Point2f'에 대해서는, 클래스가 작기 때문에 논쟁의 여지가 있지만 기본적으로 value가 아닌 const 참조로 객체를 전달합니다. – Jarod42

관련 문제