如何在图像中找到两个椭圆之间的角度?

时间:2017-01-08 05:01:33

标签: python opencv image-processing

enter image description here图像有两个椭圆(对于简单的情况,我们可以认为两个椭圆都相同)。其中一个椭圆从另一个旋转和平移。我们只有这些椭圆的图像。如何估算旋转角度(两个椭圆之间的角度)?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

在我的头顶,我做到了这一点:(考虑到标签,我假设您使用opencv)

1-Use" findContours"命令获得界限'每个省略号的像素分别。

2 - 对于每个省略号,通过以下公式计算每对像素之间的距离(对于边界中的所有像素 - 在双环中):( D=sqrt((y1-y2)^2 + (x1-x2)^2))并找到显示最远距离的对。该对包括省略号长轴的两端。

3 - 使用两个提到的点,通过以下等式计算长轴相对于图像x轴的角度:

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

4 - 找到另一个省略号的角度并减去两个角度以找到它们之间的角度。