swift - 获取 AVCaptureSession 或 AVCaptureVideoPreviewLayer 的像素颜色

标签 swift pixel avcapturesession

在我的应用程序的设计中,我想将实时摄像头源周围的框架更改为实时摄像头中中间像素的确切颜色。就我的应用程序而言,这很重要,而不仅仅是一个微不足道的配色方案。

我有代码可以遍历 UIImage 甚至 UIView 的字节并找到特定坐标的像素颜色。但是,这似乎不适用于 AVCaptureSession 或 AVCaptureVideoPreviewLayer。

我拥有的最好的解决方法是在后台运行一个队列,每 0.1 秒基本上在屏幕外绘制一个保存的图像,并以这种方式找到像素颜色。我知道这不是最好的方法!想知道是否有人可以向我指出有用的资源。

最佳答案

您可以尝试从AVFoundation获取相机帧并分析帧图像缓冲区以了解颜色。

假设您已经有了 AVCaptureVideoDataOutput 设置,那么您可以简单地使用下面的 AVCaptureVideoDataOutputSampleBufferDelegate获取相机帧的方法。

optional func captureOutput(_ captureOutput: AVCaptureOutput!, 
      didOutputSampleBuffer sampleBuffer: CMSampleBuffer!, 
                       from connection: AVCaptureConnection!)

请注意,该委托(delegate)只会为我们提供图像缓冲区,即 CMSampleBuffer。因此,我们需要将此缓冲区转换为 UIImage 并找到您的情况下的像素颜色。

以下是一些可以帮助您的答案。

关于swift - 获取 AVCaptureSession 或 AVCaptureVideoPreviewLayer 的像素颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44223195/

相关文章:

ios - 在 Realm Swift 中从一对一关系到一对多关系

iphone - 如何更改图像中的特定颜色?

javascript - 如何在 javascript 中将 x 坐标转换为像素?

ios - 使用 CIContext 在 GLKView 中绘制时,方面填充 AVCaptureVideoDataOutput

ios - 如何实现摄像头从前置摄像头更改为后置摄像头

swift - viewDidLoad 和 viewWillAppear。从服务器下载数据并更新tableView

ios - 快速将自定义注释图钉图像更新为标准注释图钉

iPhone Objective-C : How to get a pixel's color of the touched point on an UIImageView?

iphone - iOS - 尝试了解电影是如何运作的

ios - Swift:只调用一个 TableView 方法