2

我正在使用以下代码使用 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;

这很好用,只要场景中只有一个对象。然而,如果有多个对象,currentX并且currentY将导致所有对象的中点。

有没有办法计算每个物体的力矩(和坐标)?

4

1 回答 1

2

你将不得不为此使用countours。对于 C++ api,您有一个名为 cv::findContours 的函数,您可以在其中传递阈值图像,然后计算每个计数/对象的矩。在OpenCV 文档中查找更多详细信息。

于 2012-09-25T12:18:13.023 回答