向量的模式匹配/识别库(如用于图像输入的OpenCV) 有没有人知道C++中的一个好的模式匹配/识别库(OSS优先),它能够检测向量列表是箭头还是其他类?

向量的模式匹配/识别库(如用于图像输入的OpenCV) 有没有人知道C++中的一个好的模式匹配/识别库(OSS优先),它能够检测向量列表是箭头还是其他类?,c++,pattern-matching,vector-graphics,C++,Pattern Matching,Vector Graphics,我已经知道OpenCV,但这是为了用于光栅图形(或者我错过了什么?)。。。但我已经有了一个向量几何体,将它们转换回光栅图形听起来很奇怪,在这里你必须再次检测边缘 因此,我需要的是一个库,它使用矢量列表作为输入,而不是光栅图形,并且可以识别矢量是否是箭头(与方向无关),并提取箭头的部分(头/尖/尾等) 谁知道这样一个库或有一个提示在哪里寻找这种问题(算法等) 我试图改变用户界面的使用方式。我已经尝试了量角器算法,并将识别步骤分为不同的部分,例如箭头: 绘制,停止绘制并获取结果 将第一条线视为主体(

我已经知道OpenCV,但这是为了用于光栅图形(或者我错过了什么?)。。。但我已经有了一个向量几何体,将它们转换回光栅图形听起来很奇怪,在这里你必须再次检测边缘

因此,我需要的是一个库,它使用矢量列表作为输入,而不是光栅图形,并且可以识别矢量是否是箭头(与方向无关),并提取箭头的部分(头/尖/尾等)

谁知道这样一个库或有一个提示在哪里寻找这种问题(算法等)

我试图改变用户界面的使用方式。我已经尝试了量角器算法,并将识别步骤分为不同的部分,例如箭头:

  • 绘制,停止绘制并获取结果
  • 将第一条线视为主体(路线线、箭头轴)
  • 等待接受(=>结果被识别为简单线条,将手绘图形替换为路线图形)或下一个绘制过程
  • 绘制箭头并获取结果坐标
  • 等待接受/完成按钮(=>结果识别为箭头,不是简单的路线)
  • a) 用正确的箭头图形替换手绘矢量
  • b) 或者继续做一些肉馅?呜呜,呜呜,呜呜
  • 但我想在一个步骤中对所有矢量线(无论顺序和方向)执行此操作。有什么建议吗

    如果第一条是带角度的多段线,也有插入符号的识别,但后续符号需要在它们之间做出决定,该怎么办

    我想画命令,而不是在繁重的菜单中搜索命令。但同样重要的是要检测图形的各个部分(如中心线、左线等),并尽可能保持纵横比(尺寸),这意味着也应保持关键坐标(如箭头尖端)。这对于用校正的标准图形替换手绘矢量非常重要

    将lib作为单个任务是否可行,或者我是否应该停留在单独识别每个多段线的当前概念上,并查看输入顺序(例如,第一行必须是方向)

    您可以查看此处了解以下信息: 有$1识别器算法和一些派生算法,您可以在线试用

    问题是,我的“命令”由多行组成,每行在上下文中可能有不同的特殊含义,以获得完整的图形。我已经知道的算法和库(如上面的$1识别器)更多地与单个手势相关,而不是多个手势输入的复杂顺序,如果将多个手势输入解释为一个整体草图,则可以获得精确的含义

    我认为继续单独解释每一行,而不把它放在整个上下文中(识别整个草图),可能会导致一条死胡同。但也许一个混合的方法可以得到它

    现实生活中的比较主义:就像有人画马一样。如果马刚开始画第一条线,你不会说它是马——你需要更多的输入,例如4条腿等等

    (嗯,我知道不是每个人都擅长绘画,有些马可能看起来像牛……但无论如何,这应该让你明白我的意思。)

    有什么提示吗


    更新:我发现一段视频与问题很接近。缺少的环节是如何在识别后访问结构的各个部分,但这也可以在单独的步骤中完成(在了解图纸显示的内容后)。

    以我的拙见,我不认为野外有一个图书馆可以满足这样的特定需求。最终,您将编写自定义代码

    无论哪种方式,您首先要做的是从检测到的每个手势中提取分类特征。然后,您必须将获取的特征向量放入特征空间。一旦你这样做了,你就可以做上百万件事情来将特征向量分类到一个可用的类中(例如,箭头、三角形等)。例如,来自你所提供链接的华盛顿大学的人在步骤1,2和3中进行特征提取,并在步骤4中对获取的特征向量进行分类。 将手势分解为子手势的想法听起来很诱人,尽管我怀疑这会在某些方面带来问题(例如,如何检测子手势的结束和下一个手势的开始),而且还会带来很大的开销 因为您将在附加步骤中结束,并且缺少决策树结构

    另外一件我忘记在上面提到的事情是,为了训练分类器,您还需要创建一个大小合理的训练数据集


    我不会麻烦地建议使用库、分类器、线性代数包等,因为这首先超出了范围(也就是说,我建议您在web上搜索有助于您构建应用程序的特定组件)。

    即使问题本身很有趣(我投了更高的票),在SO中被认为是离题的:“要求我们推荐或查找工具、库或喜爱的非现场资源的问题因堆栈溢出而离题,因为它们往往会吸引自以为是的答案和垃圾邮件。相反,请描述问题以及迄今为止为解决问题所做的工作。1”@Manu343726感谢您提供的信息。我试图改进我的问题。我不认为这一定需要一个工具。这个问题的核心是“我如何着手解决问题X?”+1。在你的问题中,你暗示你已经有了一些东西,通过检测边缘可以工作。有没有一个选项可以抓取你所有的向量并将它们注入到现有的系统中