algorithm - 收集数据来识别手绘几何图形的最佳算法和最佳方法是什么?

标签 algorithm image-processing opencv computer-vision

我需要识别用户手指在设备屏幕上绘制的一些元素。首先说它们是圆形、水平线、对角线、盒子,还有一些更复杂的,比如闪电标志。

我不仅需要说出哪个元素更有可能是,而且我还需要识别元素是否绘制错误,因此它不是我识别的元素之一。

我想知道哪种算法最适合这种情况,以及为其收集数据的最佳方式是什么。

现在我使用OpenCV,算法是支持向量机。我通过计算从中心坐标到图像 10 个点的距离来收集数据。效果不太好。

最佳答案

听起来您需要提取特征向量来描述您的“手势”。理想情况下,这些特征必须是尺度和平移不变的。也就是说:它们区分手势,无论其创建的大小或角度如何。

您可能想考虑使用Velocity Moments作为运动本身很重要时要使用的功能。

或者,如果您仅处理手势的最终形状,则可以使用 OpenCV 提供的基于图像的方法。 。您可能对基于 Hu Moments 的 matchShapes() 方法特别感兴趣。

如果您已经在使用 SVM,那么这就是您的监督分类器,您可以将每个手势(带有标签)提取的特征向量输入其中以对其进行训练。除了分类器的选择(PCA、朴素贝叶斯、ANN 等)之外,问题的关键在于训练数据的质量。

当我过去做过类似的事情时,我只是使用一个小脚本来收集训练数据来捕获鼠标的运动(当按住按钮时)。我好像记得当时使用UNIX命令'xev'来捕获窗口鼠标事件。

关于algorithm - 收集数据来识别手绘几何图形的最佳算法和最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9495274/

相关文章:

c++ - 使用 cv::fisheye::unactorImage 取消鱼眼图像的扭曲

php - 图像大小调整 Web 服务

java - 将位图循环到数组中

opencv - 如何使用我从 nginx 服务器获得的视频数据流?

c++ - vector 旋转最后的内容到开头

algorithm - 没有栈帧代码重复的递归转换

android - Android中最快的移动物体识别和跟踪

c++ - 用opencv计算光流

algorithm - 是否有任何采用 7 字节 key 的 DES 库或代码?

python - 将数字列表拆分为 n 个 block ,使这些 block 具有(接近)相等的总和并保持原始顺序