で作業しており、に変換しAVCaptureVideoDataOutput
たいと考えています。UIImageView に表示されない CMSampleBufferRef から作成されたこの UIImage のように、多くの答えは同じです。および複数のプレビューを含む AVCaptureSessionCMSampleBufferRef
UIImage
VideoDataOutput 色空間を BGRA に設定すると正常に動作します (この回答CGBitmapContextCreateImage errorにクレジットされています) 。
NSString* key = (NSString*)kCVPixelBufferPixelFormatTypeKey;
NSNumber* value = [NSNumber numberWithUnsignedInt:kCVPixelFormatType_32BGRA];
NSDictionary* videoSettings = [NSDictionary dictionaryWithObject:value forKey:key];
[dataOutput setVideoSettings:videoSettings];
上記の videoSettings がないと、次のエラーが表示されます
CGBitmapContextCreate: invalid data bytes/row: should be at least 2560 for 8 integer bits/component, 3 components, kCGImageAlphaPremultipliedFirst.
<Error>: CGBitmapContextCreateImage: invalid context 0x0
Brad とCodo が AVCaptureSession に起因する CMSampleBuffer から Y コンポーネントを取得する方法で述べているように、YUV (デフォルトの AVCaptureSession 色空間) から BGRA への変換オーバーヘッドがあるため、BGRA での作業は適切な選択ではありません。
YUV色空間に変換CMSampleBufferRef
して操作する方法はありますか?UIImage