1

我想做一些能够识别屏幕上不同物体的东西。假设我在带有文本字段、标签和按钮的窗口上截屏。我想传递图像,它应该能够区分一个和另一个。换句话说,它应该将名称'textfield'放在文本字段所在位置的顶部,'button'放在按钮顶部,'label'放在标签顶部。

这是来自互联网的示例图像,用于可视化“注册窗口”: http: //kb.parallels.com/Attachments/12828/Images/registration1.jpg

我想在 Java 中做到这一点,但我不确定这是否可能。有谁知道我应该从哪里开始寻找?边缘检测?特征检测?OCR/ICR?

这已经存在了吗?以前有人遇到过这样的事情吗?

有人可以指出我正确的方向吗?我将不胜感激。

谢谢!:)

4

1 回答 1

0

这就是我的工作方式:

A) 识别/分割。在不知道您的数据的情况下,您可能会觉得“找到一个不到窗口面积一半的矩形(或接近它的东西,因为边缘是圆形的)”(取决于您的数据..)。

B) 分类。就个人而言,我会将您找到的每个对象缩放为 100*100(或其他大小)并将其与示例数据进行比较(是的,您可以将迷你复选框缩放到该大小。它看起来不漂亮,但它不会不管它看起来如何..)。“蛮力”(这就是我缩放的原因)或一些不错的分类算法。(不要使用神经网络,使用 SVM 或最近邻)。对于分类,我主要查看矩形内的直方图和形状因子/矩。如果文本混淆了数据,在分类之前用一些形态来摆脱它。

文本字段有点棘手,但为此,我会使用一些 OCR 库并查看整个图片。(就我个人而言,我在 IMAQ 上做得很好,但它是商业的)。如果文本在一个框外,那么你就有了一个标签。

您可能应该研究 OpenCV。

于 2012-05-25T11:34:42.477 回答