Определение эллипса с OpenCV

Я хотел бы обнаружить эллипсы с OpenCV для Android, используя учебник 2-Basic, включенный в пакет OpenCV 2.4.1 в качестве отправной точки. Обратите внимание, что мой эллипс будет идеальным-photoshop.

из того, что я понимаю, использование "HoughCircles" найдет только идеальные (или около того) круги, таким образом, оставляя эллипсы.

любая помощь была бы очень признательна, так как я новичок в OpenCV

Это то, что я пытался так далеко!--2-->

    case Sample2NativeCamera.VIEW_MODE_CANNY: (ignore the Canny mode...)

        capture.retrieve(mGray, Highgui.CV_CAP_ANDROID_GREY_FRAME);
        Imgproc.HoughCircles(mGray, mCircles, Imgproc.CV_HOUGH_GRADIENT, 1, 20);
        Log.d("Ellipse Points", " X " + mCircles.get(1,1)[0] + mCircles.get(1, 1)[1]);

        break;

Если вы думаете, что больше информации может быть полезным, пожалуйста, дайте мне знать.

3 ответов


одно из возможных решений вашей проблемы похоже на эту тему обнаружение монет (и подходят эллипсы) на изображении .

вы должны взглянуть на функцию opencv fitEllipse.


параметры HoughCircles играть основополагающую роль. HoughCircles обнаружит не только идеальные, но и почти идеальные круги (эллипсы). Я предлагаю вам проверить эти примеры:

и ответ имеет приличную коллекцию ссылок.


Если у вас уже есть представление о размерах эллипсов, что вы ищете, то попробуйте следующее:

  • найти осторожные края в изображении
  • используйте раздвижное окно, размер которого является максимальной длиной главной оси эллипсов, которые вы ищете.
  • в окне соберите все пиксели края, выберите 6 пикселей случайным образом и используйте линейные наименьшие квадраты чтобы вписать эллипс в общие форма.
  • повторите вышеуказанный шаг в процедуре RANSAC like.
  • Если есть достаточно inliers, у вас есть эллипс.