【问题标题】:Detecting same image?检测到相同的图像?
【发布时间】:2017-05-05 19:03:13
【问题描述】:

目前正在做一个副项目,但我被困在一个很大的部分上。

目标是用户可以从包含 6 个图像/图标的不同流行应用中截取屏幕截图。我想要它,所以当用户进入我的应用程序时,他们可以上传该屏幕截图,我可以检测 6 张图像并将它们放入集合视图中。

问题是在屏幕截图中检测 6 张图片的类型,我曾考虑使用像 Tesseract 这样的 OCR,但我不确定这是否可行,因为屏幕截图中的文本为零,只有 6 张图片。可能有帮助的是,在那个应用程序中只有 50 种图像。创建某种图像数据库有帮助吗?但是我该如何比较它们呢?

如果这没有意义,我很抱歉,我只是不知道如何措辞。任何帮助都会很棒。

【问题讨论】:

  • 所以你想比较一张图片和一组图片,然后给它一个标签?
  • 是的,我想从屏幕截图中检测 6 张图像,并将它们与一组图像进行比较。只是不知道如何将它们相互比较。
  • 我认为目标是使用类似于面部识别的东西来尝试定位屏幕截图中的 6 张图像。这听起来像是一个复杂的计算机视觉类型问题。
  • 如果它是非常简单的相似图像,您可能需要研究感知散列。否则计算机视觉是正确的方法。
  • 我解决这个问题的第一个想法是使用计算机视觉。像 OpenCV 这样的库可能是一个不错的选择。看看stackoverflow.com/questions/4196453/…

标签: ios swift ocr


【解决方案1】:

假设您希望能够跨多种类型的设备执行此操作,那么像 OpenCV 这样的计算机视觉库可能是可行的方法。

如果您的用户总是在同一台设备上运行应用程序(比如总是在 iPhone 5 上),那么图标可能总是出现在完全相同的位置,您可以简单地将屏幕截图切开,提取组件图像,然后对子图像进行逐字节比较。但是,您需要处理 iPhone 4、iPhone 5、iPhone 6、6+ 屏幕尺寸、iPad、iPad Retina、iPad pro(小型和大型),以及可能的纵向和横向。据推测,这 6 张图像将出现在所有这些不同设备的屏幕上的不同位置,并且您也将需要处理不同的图像分辨率。使用 OpenCV,您应该能够通过“查看”屏幕截图而不是构建一组复杂的规则来找到图像的边界矩形。

【讨论】:

    【解决方案2】:

    查看用于匹配 SIFT 特征的 OpenCV 示例代码(python 版本 here,但您也可以找到其他语言的示例)。它演示了您想要做的更简单的版本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-03
      • 1970-01-01
      • 2016-02-13
      • 2011-04-16
      • 2010-09-25
      • 2019-06-22
      • 2015-03-09
      • 2018-11-27
      相关资源
      最近更新 更多