在我的应用程序的设计中,我想将实时摄像头源周围的框架更改为实时摄像头中中间像素的确切颜色。就我的应用程序而言,这很重要,而不仅仅是一个微不足道的配色方案。
我有代码可以遍历 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/