Как проверить контуры эллипса или нет, используя функцию fitEllipse в OpenCv C ++?

    vector<vector<Point> > contours;
vector<Vec4i> hierarchy;

findContours(img, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, Point(0, 0));

Теперь, как я могу получить расположение эллипсов из этих контуров?

0

Решение

Самое простое решение для каждого контура:

  • вычислить эллипс (используя функцию fitEllipse)
  • нарисуйте заполненный контур и (на другом коврике) нарисуйте заполненный эллипс (из предыдущего пункта)
  • вычесть (или — возможно, лучше — использовать функцию absdiff) на мат из другого
  • найти количество не черных пикселей (используйте функцию countNonZero)
  • если число ненулевых пикселей, разделенных на площадь контура, мало, то этот контур является эллипсом, если это число большим — это не эллипс. Вам нужно найти ценности самостоятельно

Рисование контуров может быть немного сложным, потому что трудно сказать, где их рисовать. Для меня лучший вариант — найти центр масс контура и нарисовать контур в таком положении, чтобы центр масс находился в той же точке, что и центр эллипса.

Надеюсь, что это поможет и что это понятно, если нет — дайте мне знать, я постараюсь объяснить это лучше.

0

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


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