Как найти радиус неправильной окружности с помощью OpenCV Stack Overflow

Как я могу оценить радиус нерегулярной окружности, которую я обнаружил? я использовал findContours() чтобы найти, где круги и используются moments() найти центр масс. Теперь мне просто нужен радиус круга, чтобы я мог оценить его объем.

Для нахождения контуров я использовал следующий код:

findContours(Closed_Image, Contours, Hierarchy,
CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE, Point(0,0) );

Для нахождения центра масс я использовал следующий код:

vector<Moments> mu(Contours.size() );
b = 0;
for(b = 0; b < Contours.size(); b++)
{
mu[b] = moments(Contours[b], true);
}

vector<Point2f> mc(Contours.size() );
c = 0;
for(c = 0; c < Contours.size(); c++)
{
mc[c] = Point2f(mu[c].m10/mu[c].m00, mu[c].m01/mu[c].m00);
cout << "Contours Centre = " << mc[c] << endl;
}

Я предполагаю, что мне нужно использовать точки контура, хранящиеся в Contours но форма не является идеальным кругом, поэтому расстояние между каждой точкой контура и его центром масс будет другим. Это просто вопрос усреднения расстояния между центром масс и каждой точкой контура (среднее расстояние = радиус)? Если да, то как я могу на самом деле реализовать это (я не уверен, как получить доступ к данным в vector<vector<Point> > Contours;). В противном случае, как я смогу добиться оценки радиуса?

(Нажмите здесь для изображения, с которым я работаю)

Центр масс выглядит следующим образом: [424.081, 13.4634], [291.159, 10.4545], [157.833, 10.4286], [24.5198, 8.09127]

0

Решение

Задача ещё не решена.

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

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector