我想要识别手写形状,并找出它可能是集合中的哪个形状。简单地说,如果我绘制一个三角形,应用程序应该将其识别为三角形。我如何使用C#或java来做到这一点,任何帮助都是感激不尽的。
提前谢谢。
这些是我需要识别的一些形状

发布于 2011-05-26 22:04:37
为此,您可以尝试使用OpenCV。EmguCV是用于.net的OpenCV的一个很好的包装器。观看ShapeDetection演示(包含在OpenCV中)
发布于 2011-05-30 14:10:23
如果你想“滚你自己的”,我会建议以下步骤:
首先,对图像进行骨架化(细化图像,直到所有的线条都有一个像素粗)。有很多方法可以做到这一点,这是一个经过充分研究的问题。谷歌获取更多信息。
现在,从一个黑色像素开始,逐一浏览并勾画出图像的轮廓。您可以将这些线段添加到勾勒出形状的线段列表中(每个线段将是从一个像素到其相邻像素的一条简单的线)。现在,您拥有了形状的轮廓,它是一个多边多边形。
(可能的步骤是:通过将每个顶点拉近其相邻顶点的平均值来平滑轮廓)
现在,您将使用角点检测算法来查找角点(查看此处:http://visual.ipan.sztaki.hu/corner/node7.html)。
这应该足以识别您列出的形状。
如果想变得更聪明,还可以确定角之间存在的边的类型。如果两个角之间的线段保持在它们之间的直线的某个阈值内,则将其视为一条“直线”边。如果没有,你就把它当做一个弯曲的边缘。
使用角+直/弯边缘,您可能可以很好地检测到您正在寻找的任何形状。
发布于 2011-05-26 21:56:51
我建议使用neural network。
你可以教它形状是什么样子的。
这是一个库,例如:
https://stackoverflow.com/questions/6139623
复制相似问题