如何识别一组线是否与形状相似
How to identify if a set of lines is similar to a shape
目前我有一个程序允许用户通过每 0.05 秒捕获一次鼠标位置并在一个点和下一个点之间画一条线来在上面作画。通过该设置,我正在寻找一种方法来识别圆形、矩形或字母 'P'.
等形状
我目前的算法将屏幕划分为多个部分,然后用玩家记录的点标记这些部分,并用标记的部分制作一个矩阵,然后将该矩阵与每个形状矩阵进行比较。
这缺乏对旋转、大小或位置的任何支持。在大多数情况下,阈值的控制也很棘手,返回虚假结果。
我需要一种算法,可以将例如“P”识别为“P”。
注意:我当前的应用程序是 运行 在 c++ 框架上,因此欢迎使用任何库或工具,但我对背后的算法很感兴趣。
编辑:考虑问题后,我更改了屏幕上的当前网格,而不是捕获点并移动它们以调整大小
形状使其适合网格并在该网格上与已知形状进行比较。
Picture of the process
这解决了位置和大小问题,同时速度足够快,同时旋转输入然后在循环中调整大小可能会解决旋转问题(似乎成本很高而且不太可靠)
我很乐意欢迎使用其他方法来处理形状比较或旋转。
考虑问题后,我更改了屏幕上的当前网格,而不是捕获点并移动它们以调整大小
形状使其适合网格并在该网格上与已知形状进行比较。
Picture of the process
这解决了位置和大小问题,同时速度足够快,同时旋转输入然后在循环中调整大小可能会解决旋转问题(似乎成本很高而且不太可靠)
目前我有一个程序允许用户通过每 0.05 秒捕获一次鼠标位置并在一个点和下一个点之间画一条线来在上面作画。通过该设置,我正在寻找一种方法来识别圆形、矩形或字母 'P'.
等形状我目前的算法将屏幕划分为多个部分,然后用玩家记录的点标记这些部分,并用标记的部分制作一个矩阵,然后将该矩阵与每个形状矩阵进行比较。
这缺乏对旋转、大小或位置的任何支持。在大多数情况下,阈值的控制也很棘手,返回虚假结果。 我需要一种算法,可以将例如“P”识别为“P”。
注意:我当前的应用程序是 运行 在 c++ 框架上,因此欢迎使用任何库或工具,但我对背后的算法很感兴趣。
编辑:考虑问题后,我更改了屏幕上的当前网格,而不是捕获点并移动它们以调整大小 形状使其适合网格并在该网格上与已知形状进行比较。
Picture of the process
这解决了位置和大小问题,同时速度足够快,同时旋转输入然后在循环中调整大小可能会解决旋转问题(似乎成本很高而且不太可靠)
我很乐意欢迎使用其他方法来处理形状比较或旋转。
考虑问题后,我更改了屏幕上的当前网格,而不是捕获点并移动它们以调整大小 形状使其适合网格并在该网格上与已知形状进行比较。
Picture of the process
这解决了位置和大小问题,同时速度足够快,同时旋转输入然后在循环中调整大小可能会解决旋转问题(似乎成本很高而且不太可靠)