如何在Python + Opencv中找到两个轮廓之间的角度

时间:2017-12-15 10:18:44

标签: python opencv angle

我试图找到this图像中两个轮廓之间的角度。然而,最右边轮廓的中心点在整个地方都在抽搐。我使用此代码:

df_sessions_2.plot()

我认为我的代码中的cnt1,cnt2部分导致了问题,我不知道openCV如何命令此数组中的轮廓。

任何人都可以帮我修复此代码吗?

1 个答案:

答案 0 :(得分:1)

我假设您已根据区域等过滤了轮廓,最后您只剩下2个轮廓:

enter image description here

现在对于两个轮廓,只需将中心点计算为角度:

import cv2
import math


def get_center(contour):
    M = cv2.moments(contour)
    cX = int(M["m10"] / M["m00"])
    cY = int(M["m01"] / M["m00"])

    return cX, cY


def get_angle(p1, p2):
    return math.atan2(p1[1] - p2[1], p1[0] - p2[0]) * 180/math.pi


img = cv2.imread("./binary_img.png", 0)
i, contours, hierarchy = cv2.findContours(img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
if len(contours) == 2:
    center_1, center_2 = get_center(contours[0]), get_center(contours[1])
    print get_angle(center_1, center_2)