【问题标题】:Finding a specific color value in a UIImage在 UIImage 中查找特定颜色值
【发布时间】:2017-07-13 10:17:21
【问题描述】:

我的 Xcode 项目中有一个 UIImageView。我正在尝试找到一种方法来检测图像中的某些颜色(例如某种红色)。我似乎找不到任何方法来做到这一点。有谁知道这是如何实现的?

我已经看到了如何在照片中找到“平均颜色”的不同方法。我想知道是否有一种方法可以专门“检测”图像中可能存在的某种颜色。

例如,在这张图片中,有一种方法可以让我检测到照片中存在那种红色。 Blue and Red Rectangles

谢谢

【问题讨论】:

  • 你确实没有提供足够的细节。例如,您尝试过什么代码?此外,您具体需要什么?您是否要求“刮擦”图像并获得“平均”颜色?还是在某个 CGRect 之上?或者我应该问“什么是红色”?我(还)没有看到将其标记为“太模糊”的理由,但是@Pickle2113,您可以看到您(到目前为止)提出的问题有多糟糕吗?
  • 您需要检查图像中的每个像素,并将其与您要查找的颜色进行比较。使用 UIImage 没有简单的方法可以做到这一点,但请在这里尝试stackoverflow.com/questions/40158320/…
  • 这至少更有意义吗?如果不告诉我,我会尝试再次添加更多信息。对不起。我绝对是新来的,我只是在寻求帮助。
  • 谢谢。我会试试的。

标签: swift xcode image colors image-recognition


【解决方案1】:

试试这个

扩展 UIImage { func getPixelColor(pos: CGPoint) -> UIColor {

      let pixelData = CGDataProviderCopyData(CGImageGetDataProvider(self.CGImage))
      let data: UnsafePointer<UInt8> = CFDataGetBytePtr(pixelData)

      let pixelInfo: Int = ((Int(self.size.width) * Int(pos.y)) + Int(pos.x)) * 4

      let r = CGFloat(data[pixelInfo]) / CGFloat(255.0)
      let g = CGFloat(data[pixelInfo+1]) / CGFloat(255.0)
      let b = CGFloat(data[pixelInfo+2]) / CGFloat(255.0)
      let a = CGFloat(data[pixelInfo+3]) / CGFloat(255.0)

      return UIColor(red: r, green: g, blue: b, alpha: a)
  }  

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多