我有一组简单的形状(见下图),我想识别手写形状并找出它在集合中的形状。
有没有简单的算法呢?还是任何开源的lib?
顺便说一下,我的任务很简单,所以我不会使用像OpenCV这样复杂的lib。先谢谢!!
答案 0 :(得分:1)
答案 1 :(得分:0)
我不知道如何在C或C ++中做到这一点,但算法是简单的。请注意,成功率随着每个角度添加到形状而减小,因此它应该有助于识别上面给出的基本形状集,但不是很多。
当然,完全准确匹配永远不可能。我甚至无法判断你的第二个示例形状是倾斜的平行四边形还是倾斜的正方形(或菱形或矩形)。
答案 2 :(得分:0)
这基本上是线路检测
它仅适用于直线形状,并不简单
假设你的数字中有k个线段,使用k-means算法将点聚合成线
首先将点随机分成簇
对于这些簇中的每一个,计算点近似的线。 (与点的所有距离之和最小的线)
应将异常值(距离线最远的点)重新分配给其他更适合的群集
重复最后一步,直到达到某个阈值
如果您没有达到所需的阈值,那么您可以尝试不同的K值
如果你到达那个,那么你可以计算这些线的交集,并提取你需要的不规则形状与常规形状匹配的其他属性。
你可以通过这种方式从正方形和平行四边形中分辨正方形和三角形,但它非常复杂
这种“算法”可用于波浪线,虚线或线条不相交的形状,因此它非常强大