【发布时间】:2013-07-03 00:30:03
【问题描述】:
我想识别在屏幕上绘制的圆形、三角形和矩形等形状。我的主要目标是用户在屏幕上绘制一个形状,我需要一个代码来识别这个形状。我应该如何解决这个问题?
【问题讨论】:
-
欢迎来到stackoverflow。您尝试过什么来解决您的问题?请阅读以下内容并改进您的问题:meta.stackexchange.com/questions/156810/…
我想识别在屏幕上绘制的圆形、三角形和矩形等形状。我的主要目标是用户在屏幕上绘制一个形状,我需要一个代码来识别这个形状。我应该如何解决这个问题?
【问题讨论】:
您要实现的目标可能非常棘手,但我不久前碰巧实现了类似的东西,这是我使用的方法:
a) 如果它的纵横比接近正方形,则只需裁剪其周围的空白区域并将其放大,使其与您的数据库图像具有相同的大小
b) 否则,它很可能有一个尺寸大约是另一个尺寸的两倍,在这种情况下,您裁剪空白区域,旋转它以使其高度成为最大尺寸,将其放大到 256x128,然后添加两边有 64 像素的空白。
鉴于上述算法有点耗费资源,您可能会考虑在某处安装一台服务器,它可以进行实际比较,尤其是如果您想将许多图像添加到您的数据库中。因为我已经为演示应用程序实现了这个算法,所以我已经可以告诉你,你将不得不做很多像素操作。此外,使用 Android SDK 旋转图像可能很烦人,因为它会改变图像尺寸...
如果您喜欢冒险,这里有几篇论文描述了解决这个问题的最先进算法:Greg Mori、Serge Belongie 和 Jitendra Malik (2001) 的“Shape contexts enable efficient retrieval of similar shapes”和“Shape Matching: Similarity Measures and Algorithms” Remco C. Veltkamp (2001)。不过,数学可能有点重。
【讨论】:
您应该查看 GestureOverlayView。 一个不错的教程是:http://www.vogella.com/articles/AndroidGestures/article.html
【讨论】: