我试图找到this图像中两个轮廓之间的角度。然而,最右边轮廓的中心点在整个地方都在抽搐。我使用此代码:
df_sessions_2.plot()
我认为我的代码中的cnt1,cnt2部分导致了问题,我不知道openCV如何命令此数组中的轮廓。
任何人都可以帮我修复此代码吗?
答案 0 :(得分:1)
我假设您已根据区域等过滤了轮廓,最后您只剩下2个轮廓:
现在对于两个轮廓,只需将中心点计算为角度:
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)