Найти расстояние от контура до точки opencv Stack Overflow

Я бы создал Матрицу, в столбце которой [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.

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;
}
1

Другие решения

Для этого в openCV есть функция; pointPolygonTest.

1

По вопросам рекламы [email protected]