Я пытаюсь обработать видеокадры и извлечь из нее концентрированный цвет. Я использовал AVCaptureStillImageOutput
, но он делал звук затвора каждый раз, когда я принимал кадр для обработки, поэтому я переключился на AVCaptureVideoDataOutput
и теперь обрабатывал каждый кадр по мере его поступления.Swift - captureOutput рама, выделенная цветом, всегда приближается к черному
Вот код, я использую:
func captureOutput(captureOutput: AVCaptureOutput!, didOutputSampleBuffer sampleBuffer: CMSampleBuffer!, fromConnection connection: AVCaptureConnection!) {
currentFrame = self.convertImageFromCMSampleBufferRef(sampleBuffer);
if let image = UIImage(CIImage: currentFrame){
if let color = self.extractColor(image) {
// print the color code
}
}
}
func convertImageFromCMSampleBufferRef(sampleBuffer:CMSampleBuffer) -> CIImage{
let pixelBuffer:CVPixelBufferRef = CMSampleBufferGetImageBuffer(sampleBuffer);
var ciImage:CIImage = CIImage(CVPixelBuffer: pixelBuffer)
return ciImage;
}
С AVCaptureStillImageOutput
я получал почти правильный вывод, но с AVCaptureVideoDataOutput
значения всегда рядом с черным, даже если вид камеры в яркий свет. Я предполагаю, что проблема связана с частотой кадров или чем-то, но не в состоянии понять это.
В последние несколько теста это единственный цвет, код, я получаю #1b1f01
Я хотел бы использовать оригинальный AVCaptureStillImageOutput
код, но он не должен сделать звук затвора, и я не в состоянии вывести его из строя.
Вы когда-нибудь находили решение этой проблемы? – Cari95