找到从轮廓到Point opencv C ++的距离

时间:2017-04-20 10:33:43

标签: c++ opencv point contour imaging

我将创建一个矩阵,其在coloumn [i]中具有从固定点(轮廓的质心(mc(i))到轮廓[i]的点的距离。

这是我找到轮廓和质量中心的代码:

findContours(binMat, contours, cv::RETR_EXTERNAL, 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] = Point2d(mu[i].m10 / mu[i].m00, mu[i].m01 / mu[i].m00);
}

此代码运行良好。

接下来,我尝试了很多方法来找到距离,但由于我是使用C ++进行新编程并使用OpenCV而遇到很多问题。

2 个答案:

答案 0 :(得分:1)

openCV中有一个功能; pointPolygonTest

答案 1 :(得分:1)

for (int i = 0; i < contours.size(); i++)
{
    mc[i] = Point2d(mu[i].m10 / mu[i].m00, mu[i].m01 / mu[i].m00);

    KeyPoint k;
    k.pt = mc[i];

    float d = (k.pt.x,k.pt.y, centerX,centerY);
}

计算2点之间距离的函数

float distance(int x1, int y1, int x2, int y2)
{

    float d = sqrt(pow((x1 - x2), 2) + pow((y1 - y2), 2));

    return d;
}