我需要识别用户手指在设备屏幕上绘制的一些元素。首先说它们是圆形、水平线、对角线、盒子,还有一些更复杂的,比如闪电标志。
我不仅需要说出哪个元素更有可能是,而且我还需要识别元素是否绘制错误,因此它不是我识别的元素之一。
我想知道哪种算法最适合这种情况,以及为其收集数据的最佳方式是什么。
现在我使用OpenCV,算法是支持向量机。我通过计算从中心坐标到图像 10 个点的距离来收集数据。效果不太好。
最佳答案
听起来您需要提取特征向量来描述您的“手势”。理想情况下,这些特征必须是尺度和平移不变的。也就是说:它们区分手势,无论其创建的大小或角度如何。
您可能想考虑使用Velocity Moments作为运动本身很重要时要使用的功能。
或者,如果您仅处理手势的最终形状,则可以使用 OpenCV 提供的基于图像的方法。 。您可能对基于 Hu Moments 的 matchShapes() 方法特别感兴趣。
如果您已经在使用 SVM,那么这就是您的监督分类器,您可以将每个手势(带有标签)提取的特征向量输入其中以对其进行训练。除了分类器的选择(PCA、朴素贝叶斯、ANN 等)之外,问题的关键在于训练数据的质量。
当我过去做过类似的事情时,我只是使用一个小脚本来收集训练数据来捕获鼠标的运动(当按住按钮时)。我好像记得当时使用UNIX命令'xev'来捕获窗口鼠标事件。
关于algorithm - 收集数据来识别手绘几何图形的最佳算法和最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9495274/