次のコードを使用して、opencvを使用してオブジェクトのモーメントと位置を計算しています。
// calc object moments
CvMoments *moments = (CvMoments*) malloc(sizeof(CvMoments));
cvMoments(threshy, moments, 1);
// get the moment values
double moment10 = cvGetSpatialMoment(moments, 1, 0);
double moment01 = cvGetSpatialMoment(moments, 0, 1);
double area = cvGetCentralMoment(moments, 0, 0);
// save the X and Y position from previous iteration.
int lastX = currentX;
int lastY = currentY;
// calculate the new X and Y positions.
currentX = moment10/area;
currentY = moment01/area;
シーンにオブジェクトが1つしかない限り、これはうまく機能します。ただし、複数のオブジェクトがあり、すべてのオブジェクトの中点になる場合currentX
。currentY
各オブジェクトのモーメント(および座標)を計算する方法はありますか?