Аномалия с установкой эллипса при использовании cv2.ellipse с различными параметрами?

Я использую OpenCV 2.4.11 с Python 2.7.9 в Windows 8.1. Я пытался нанести эллипсы на мои контуры, и я наткнулся на то, что не могу понять.

Когда я вызываю cv2.fitEllipse и получаю возвращаемое значение, а затем передаю возвращаемое значение непосредственно в cv2.ellipse со следующим кодом, эллипсы, нарисованные на экране, идеальны и оптимально подходят для моих контуров:

contours, hierarchy = cv2.findContours(binaryimage,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_NONE) for ind, cont in enumerate(contours): elps = cv2.fitEllipse(cont) #Feed elps directly into cv2.ellipse cv2.ellipse(displayframe,elps,(0,0,255)) cv2.imshow("Perfectly fitted ellipses", displayframe) 

Результаты для вышеизложенного

введите описание изображения здесь

Однако, когда я пытаюсь проанализировать фактические параметры эллипса и нарисовать эллипс вручную, передав эти параметры (см. Код ниже), он создает «раздутую» версию эллипса, которая дает очень удобную (но раздражающую) скобку пространства вокруг контура, следующим образом:

 contours, hierarchy = cv2.findContours(binaryimage,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_NONE) for ind, cont in enumerate(contours): (x,y),(MA,ma),angle = cv2.fitEllipse(cont) #feed the parsed parameters into cv2.ellipse cv2.ellipse(displayframe,(x,y),(MA, ma),angle,0,360,(0,0,255)) cv2.imshow("Ellipses NOT fitting the contours properly",displayframe) 

Результатами этого раздражающего явления являются:

введите описание изображения здесь

Да, я знаю, что использование первого метода решает проблему рисования правильных эллипсов. Но я хочу знать, почему он это делает, потому что на самом деле мне понадобятся параметры эллипсов, чтобы выполнить какое-то отслеживание blob, и если анализируемые параметры заканчиваются тем, что дают широкие непригодные эллипсы, действительно ли это точный? Проблема с функцией cv2.ellipse ()? Любые идеи о том, что происходит не так? Точные параметры эллипса, выходящие из функции cv2.fitEllipse?

  • Получение ближайшей даты до заданной даты
  • ValueError: неверная строка при использовании ast.literal_eval
  • Разница между setUpClass и setUp в Python unittest
  • Как разбить файл с помощью python
  • Как создать строку с фиксированным размером в python?
  • Как преобразовать объект datetime Python в секундах
  • Вставьте Pandas Dataframe в mongodb, используя PyMongo
  • Ли ' +' equal '(a | b) +' в модуле python re?
  • One Solution collect form web for “Аномалия с установкой эллипса при использовании cv2.ellipse с различными параметрами?”

    Вы рисуете ширину и высоту возвращаемого ограничивающего прямоугольника. Вы должны построить половину ширины и высоты, так как оси эллипса будут половинной ширины и высоты его ограничивающей рамки

     cv2.ellipse(displayframe,(x,y),(MA/2, ma/2),angle,0,360,(0,0,255)) 
    Interesting Posts

    Как очистить содержимое из нескольких таблиц на веб-странице

    Перевод Pig Latin на английский язык с помощью Python 3

    Скопировать содержимое каталога в каталог с помощью python

    Как можно использовать locals () в коде python?

    Будет ли диктовать Python с целыми числами в качестве ключей, естественно отсортированных?

    Параметрическая проверка подлинности

    Python 3 Аннотации: Тип, указывающий список указанного типа (PyCharm)

    django-admin: добавьте дополнительную строку с итогами

    Мастер создания Django для редактирования модели

    Почему numpy массивы не могут конвертировать из datetime в np.datetime64 неявно?

    Как эффективно анализировать электронные письма, не касаясь вложений с помощью Python

    Ошибка python check_output с статусом выхода 1, но Popen работает для той же команды

    Загрузите цены с помощью python

    Django: использование аннотата, графа и отличия в Queryset

    Обработка индийских языков в BeautifulSoup

    Python - лучший язык программирования в мире.