2017-05-28 176 views
0

在我的應用程序的設計中,我希望將實時相機饋送周圍的框架更改爲實時相機中中間像素的確切顏色。爲了我的應用程序的目的,這很重要,而不僅僅是一個簡單的顏色方案。獲取AVCaptureSession或AVCaptureVideoPreviewLayer的像素顏色

我有遍歷UIImage甚至UIView的字節的代碼,並找到特定座標的像素顏色。但是,這似乎不適用於AVCaptureSession或AVCaptureVideoPreviewLayer。

我擁有的最佳解決方法是在後臺運行一個隊列,每隔0.1秒本質上就會在屏幕外畫一幅保存的圖像,並以此方式查找像素顏色。我知道這不是最好的辦法!並想知道是否有人可以將我的資源指向有用的資源。

回答

0

您可以嘗試從AVFoundation獲取相機幀並分析幀圖像緩衝區以瞭解顏色。

假設你已經有AVCaptureVideoDataOutput設置,那麼你可以簡單地使用下面的AVCaptureVideoDataOutputSampleBufferDelegate方法來獲取相機幀。

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

請注意,這個代表只會給我們圖像緩衝區a.k.a CMSampleBuffer。所以我們需要將這個緩衝區轉換成UIImage並在你的情況下找到像素顏色。

下面是一些可以幫助你的答案。