【问题标题】:Get pixel color of AVCaptureSession or AVCaptureVideoPreviewLayer获取 AVCaptureSession 或 AVCaptureVideoPreviewLayer 的像素颜色
【发布时间】:2017-05-29 12:36:54
【问题描述】:

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

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

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

【问题讨论】:

    标签: swift pixel avcapturesession


    【解决方案1】:

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

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

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

    请注意,这个委托只会给我们图像缓冲区,也就是CMSampleBuffer。所以我们需要将此缓冲区转换为UIImage 并找到您的情况下的像素颜色。

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

    【讨论】:

      猜你喜欢
      • 2011-11-30
      • 2017-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多