2017-01-08 2 views
2

enter image description here Изображение имеет два эллипса (для простого случая мы можем считать, что оба эллипса одинаковы). Один из эллипсов вращается и переводится с другого. У нас есть только изображение этих эллипсов. Как оценить угол поворота (угол между двумя эллипсами)?Как найти угол между двумя эллипсами в изображении?

+0

Получить основную ось эллипса -> Рассмотрим эти оси как линии и использовать функцию «arctan2» или аналогичную функцию из «numpy» –

+0

, если вы не знаете, как получить оси, см. [Согласование эллипса] (http : //stackoverflow.com/a/36054594/2521214), тогда 'angle = acos (точка (a1, a2)/| a1 |. | a2 |)' где 'a1, a2' являются основными векторами оси для каждого эллипса – Spektre

+0

Thank вы Jeru Luke и Spektre 5 – Avi

ответ

1

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

If the image is RGB or RGBA: 
    convert it to GRAY [use cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)] 
Threshold the image to get a binary image with 2 ellipses. [cv2.threshold()] 
Find contours in the binary image [cv2.findContours()] 
Call the cv2.fitline() on each contour to get the line equation. 
Apply the formula to get the angle between 2 lines. 

Для более операций на контуры посещения http://docs.opencv.org/trunk/dd/d49/tutorial_py_contour_features.html

+0

Это даже лучшая идея. Использование 'cv2.fitline()' идеально подходит! –

1

Off верхней части моей головы, я бы это: (учитывая теги, я полагаю, вы используете OpenCV)

1- Используйте команду «findContours», чтобы получить пиксели границ каждого эллипса отдельно.

2-Для каждого эллипса вычислите расстояние между каждой пар пикселей (для всех пикселей на границе - в двойном цикле) уравнением :(D=sqrt((y1-y2)^2 + (x1-x2)^2)) и найдите пару, которая показывает наибольшее расстояние. Эта пара состоит из двух концов большой оси многоточия.

3-Использование двух упомянутых точек, вычислить угол главной оси по отношению к оси х изображения по уравнению:

angle = arctan((y2-y1)/(x2-x1)) 

4-Найти угол для другой многоточие и вычесть два чтобы найти угол между ними.

Смежные вопросы