检测是否绘制path是xcode中的一个圆/矩形

我想为绘图应用程序实现自动完成function。 一旦绘制了自由手对象,我想检测对象的types(圆形/矩形/三angular形),并根据结果绘制出相应的对象。

我已经读了一些关于OpenCV,但是我需要实时将用户绘图转换成图像。 我logging触摸绘制/追踪的点的数量,并生成相应path的UIBeizerPath 。 我如何去检测形状types?

您需要先分割数据点。 Google在“中风分割”上find相关文章。 一个简单而快速的algorithm是计算每个数据点的前向斜率和后向斜率,然后计算前向斜坡和后向斜坡之间的转向angular。 如果转动angular度大于某个angular度阈值,则可以假设你的path在那里急转弯。 从计算出的急转弯数量中,可以推断出这些点是否代表三angular形(有两个急转弯),四边形(有三个急转弯)或其他什么。 要推断数据点表示一个圆形或矩形,您将需要做额外的计算。 例如,如果根本没有急转弯,则对数据点做一个圆拟合,看看拟合圆的最大误差是否小于某个公差。 要输出一个矩形,你将不得不为每一段数据点拟合直线,并检查拟合的线是否或多或less彼此正交。

您可以使用CGPathApply(..)方法遍历UIBezierPath点。 看这里例如。

但是你应该确定形状types – 这是math任务和方法取决于你的input数据。