首先,你应该得到的点之间的距离按指数。设:
int size = contours.size();
该指数为:i = 0 ... size
。在指数i
点是
mc[i];
该点的坐标,可以通过达成:
float xCoor = mc[i].x;
float yCoor = mc[i].y;
当然你也可以从i = 0 to size
如果你想阅读所有的坐标在循环中读取这些值所有mc
分。
编辑: 我认为你知道如何找到质心,并只是问如何获得坐标。但是,如果你想获得质心和质心到另一个点的距离,那么你可以做到以下几点:
float distance;
float totalX=0.0, totalY=0.0;
for(int i=0; i<size; i++) {
totalX+=mc[i].x;
totalY+=mc[i].y;
}
Point2f massCenter(totalX/size, totalY/size); // condition: size != 0
Point2F someOtherPoint(someXVal, someYVal);
distance = massCenter.distance(someOtherPoint);
为重心到另一个点的距离。
希望有帮助!
请问您能澄清一下您的问题吗?它看起来像你的代码是正确的。你问如何访问x和y坐标,或者你的计算是否正确? – Aurelius 2015-04-01 21:23:51
@Felipe我用下面的方法理解这个问题:“你显示的代码是点mc向量的初始化,然后你必须找到质心(重心),以便计算任何距离给予这个重心的点。“如有必要,请提供补充说明。 – Antonio 2015-04-01 21:42:06
当然,对不起。我的代码运行良好,在我的情况下,我有一个轮廓(至少预计有一个轮廓),我如何访问质心的坐标? – Felipe 2015-04-02 01:40:35