Pergunta

Estou usando o AvFramework para capturar quadros de câmera e gostaria de processar e exibi -los em um UIImageView, mas estou tendo alguns problemas. Eu tenho o código:

// Delegate routine that is called when a sample buffer was written
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection
{ 
    //NSLog(@"Capturing\n");
    // Create a UIImage from the sample buffer data
    UIImage *image = [self imageFromSampleBuffer:sampleBuffer];     

    NSLog(@"Image: %f %f\n", image.size.height, image.size.width);
    [imageView setImage:image];
}

No entanto, ele não será exibido. O tamanho correto aparece no NSLog, e quando eu coloco:

[imageView setImage:[UIImage imageNamed:@"SomethingElse.png"]]; 

No ViewDidload, uma imagem é exibida corretamente (então eu sei que o UIImageView está conectado corretamente).

Existe alguma razão para isso não deve funcionar ??? Estou perdido agora.

Saúde, Brett

Foi útil?

Solução

Você está fazendo isso no tópico principal? Você pode usar a fila principal para o delegado (indesejável, porque está fazendo processamento primeiro) ou:

dispatch_async(dispatch_get_main_queue(), ^{
    imageView.image = ...;
});

Outras dicas

O ImageView é definido corretamente? Se ImageView é realmente nulo, sua chamada para [imageView setImage:image]; Silenciosamente não fará nada.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top