2

我正在使用 Python-OpenCV 来检测形状,测量它们与相机镜头的距离,并最终测量形状相对于相机的旋转角度。

这是形状与相机平行时的样子

这是形状稍微倾斜/旋转时的样子

我正在尝试确定放置形状的板的旋转角度,这就是为什么我想出将矩形的平行边的长度相互比较的想法(任何其他想法或提示都非常重要)赞赏)。 所需长度

这个想法是,当板子旋转时,平行边的长度不再相等,我可能会想出长度差异和旋转角度之间的关系。我愿意接受任何其他建议。

如上图所示,我正在努力计算这些长度。我试图避免使用霍夫线,并坚持使用等高线,因为事实证明它们在实时视频中有点不稳定。

先感谢您!

4

1 回答 1

2

此代码将为您提供 4 个角。

p = cv2.arcLength(cnt, True) # cnt is the rect Contours
appr = cv2.approxPolyDP(cnt, 0.02*p, True) # appr contains the 4 points

appr = sorted(appr, key=lambda c: c[0][0])

#pa = top lef point
#pb = bottom left point
#pc = top right point
#pd = bottom right point

pa, pb = sorted(appr[:2], key=lambda c: c[0][1])
pc, pd = sorted(appr[2:], key=lambda c: c[0][1])

# the points are x, y in list of list [[x, y]]
于 2021-08-01T15:25:26.923 回答