从屏幕截图中分类程序

Posted

技术标签:

【中文标题】从屏幕截图中分类程序【英文标题】:Classify a program from a screenshot 【发布时间】:2011-09-16 09:09:54 【问题描述】:

我需要编写一个算法来根据屏幕截图检测应用程序(用于填写表格)所处的状态。 它有 2 个输入:A: 来自应用程序的大约 2-10 个屏幕截图,其中选择了不同的选项卡。这些是由用户制作的,所以我可以指导他“选择程序的上部区域”或“选择整个窗口”,但我不能指望像素完美的精度。B: 这些状态之一的屏幕截图。表格中填写了不同的数据。

目标是确定“A”中的哪个屏幕截图与“B”处于相同状态。

示例截图:

基于此屏幕截图的示例:输入: 来自该程序的 10 个屏幕截图,其中选择了“菜单”、“销售订单”、“采购订单”...标签B 输入:上面的截图。

任务是确定 10 个屏幕截图中的哪一个与此图像匹配。

我曾尝试使用图像描述符算法 (SURF),但它的错误率非常高,因为它不适合此类任务。

有人知道如何进行这样的分类吗?我应该在屏幕截图上使用一些过滤器(例如中值或模糊),然后运行一些分类算法吗?或者提取其他一些特征进行分类(FFT、直方图、..)?

【问题讨论】:

图像有何不同?给定统一的颜色,您也许可以做一些简单的事情,比如测量蓝色(必填字段?)、白色(可编辑字段)和灰色(背景)。 egg candling 业务中获得启示,您或许可以通过比较图像的傅立叶变换来检测相似之处。你至少可以拒绝“臭鸡蛋” @Jeff 图片可能非常相似,我怀疑简单的颜色计数是否可行(例如,某些按钮具有上下文相关的文本或可以禁用,这会改变它们的颜色) 【参考方案1】:

我猜你可以使用标签宽度而不是标签标签,这样更容易计算。例如,"Menu", "Sale Order", "Purchase Order" 都有不同的宽度。

如果您必须查看选项卡内部,您可以尝试一些template matching。

【讨论】:

【参考方案2】:

检测每个选项卡的文本,然后查看背景颜色。 或者,找到一个用于像素级配准的菜单图标,然后进行逐点采样以确定选择了哪个选项卡。

【讨论】:

实际上你应该能够得到一个只有活动窗口的屏幕截图,这样就不需要注册了。 检测文本是个好主意,但我尝试过的 OCR 库 (tesseract) 无法识别这么小的文本。 (如果字体大小为 >14 则它们很好)。我喜欢你的图标创意,我会考虑如何实现它。

以上是关于从屏幕截图中分类程序的主要内容,如果未能解决你的问题,请参考以下文章

如何从“最近打开的应用程序”中获取屏幕截图?

在适用于 iTunes Connect 的通用应用程序中使用重新缩放的 iPhone 屏幕截图作为 iPad 屏幕截图

XCTEST - 如何从屏幕截图中提取文本并将其与预期字符串进行比较

如何从屏幕截图中排除叠加层?

是否可以在屏幕截图中隐藏我的应用程序视图? [复制]

delphi不用getdc如何屏幕截图