Python Установите эллипс на изображение
У меня есть веб-камера, использующая OpenCV, и я пытаюсь установить эллипс в режиме реального времени.
Код, который я использую в данный момент, работает, но он не может долгое время эллипсировать изображение. Какие другие методы эллипса подходят для изображения, я могу преследовать?
Текущий код:
def find_ellipses(img): #img is grayscale image of what I want to fit
ret,thresh = cv2.threshold(img,127,255,0)
_,contours,hierarchy = cv2.findContours(thresh, 1, 2)
if len(contours) != 0:
for cont in contours:
if len(cont) < 5:
break
elps = cv2.fitEllipse(cont)
return elps #only returns one ellipse for now
return None
Где elps
имеет вид (x_centre,y_centre),(minor_axis,major_axis),angle
Вот пример того, что я хочу успешно подобрать для эллипса. Мой текущий код не работает с этим изображением, когда я этого не хочу.
![введите описание изображения здесь]()
Ответы
Ответ 1
Оказывается, я ошибался, это просто получение первого эллипса из этой функции. Хотя я думал, что первый рассчитанный эллипс был наиболее правильным, мне действительно нужно было пройти через все эллипсы - и выбрать наиболее подходящий, который ограничивал объект на изображении.
Ответ 2
Я бы определил свои контуры вне функции, так как вам не нужно постоянно переопределять их на этом изображении.
def create_ellipse(thresh,cnt):
ellipse = cv2.fitEllipse(cnt)
thresh = cv2.ellipse(thresh,ellipse,(0,255,0),2)
return thresh
Что делает этот код, это im, принимающий мой поток изображения и добавление эллипса поверх него. Позже в моем коде, когда я хочу его назвать, я использую строку
thresh = create_ellipse(thresh,cnt)