Чтобы найти центр тяжести контура, вы можете использовать метод моментов. И функции OpenCV реализованы.
Проверьте функцию этих моментов ( центральные и пространственные моменты ).
Ниже приведен код из учебника по OpenCV 2.3. Полный код здесь.
/// Find contours
findContours( canny_output, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, Point(0, 0) );
/// Get the moments
vector<Moments> mu(contours.size() );
for( int i = 0; i < contours.size(); i++ )
{ mu[i] = moments( contours[i], false ); }
/// Get the mass centers:
vector<Point2f> mc( contours.size() );
for( int i = 0; i < contours.size(); i++ )
{ mc[i] = Point2f( mu[i].m10/mu[i].m00 , mu[i].m01/mu[i].m00 ); }
Также посмотрите этот SOF , хотя он есть в Python, он был бы полезен. Находит все параметры контура.