我正在制作线/弧检测算法。我发现了这组讨厌的点:
[(215, 69), (217, 70), (220, 67), (223, 65), (226, 64), (229, 62), (232, 60), (236, 57), ( 239, 56), (242, 54), (245, 52), (248, 50), (251, 48), (254, 47), (257, 45), (260, 43), (264, 40), (267, 39), (270, 37), (273, 35), (276, 33), (279, 31), (282, 29), (285, 28), (288, 26) , (291, 24)]
我需要确定这些是形成一条线还是一条曲线。我绘制了一组,它看起来像这样: 一组绿色点在一条线上
它们清楚地代表一条线。
但是,我尝试了各种测试来确定它们是直线还是曲线。
我测试了每个点之间的角度是否大致相等。然而,因为线有点曲折,有一些异常点不相等
我测试了线的任何 3 个连续点的叉积,以检查它们是否共线
for k in range(0,len(pts-3),1): cp1=pts[k] cp2=pts[k+1] cp3=pts[k+2] c1,c2,c3= (cp1.x,cp1.y),(cp2.x,cp2.y),(cp3.x,cp3.y) cros= (p2.x - p1.x)*(p3.y - p1.y) - (p3.x - p1.x)*(p2.y - p1.y) print(abs(cros))
其中一些具有非常重要的交叉产品。再次因为这条线是我认为的曲折线。
这种曲折的结构让我的算法崩溃了!那么如何确定曲折的曲折线是直线还是曲线?