Ich ergreife den YUV-Kanal vom IPhone im Format kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange (YUV, Bi-Planar).IPhone YUV Kanalausrichtung
Ich beabsichtige, die y-Kanal zu verarbeiten, so dass ich schnappen sie unter Verwendung von
CVImageBufferRef pixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer);
CVPixelBufferLockBaseAddress(pixelBuffer, 0);
int bufferHeight = CVPixelBufferGetHeight(pixelBuffer);
int bufferWidth = CVPixelBufferGetWidth(pixelBuffer);
uint8_t *y_channel = CVPixelBufferGetBaseAddressOfPlane(pixelBuffer, 0);
Das Problem ist, dass die y_channel Pixel gedreht erscheint, und gespiegelt (I sie auf einer Overlay-Schicht zeichnen, was das Aussehen zu sehen, wie :
- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)context
{
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray();
CGContextRef bitmapContext = CGBitmapContextCreate(rotated,
imageSize->x,
imageSize->y,
8, // bitsPerComponent
1*imageSize->x, // bytesPerRow
colorSpace,
kCGImageAlphaNone);
CFRelease(colorSpace);
CGImageRef cgImage = CGBitmapContextCreateImage(bitmapContext);
CGContextDrawImage(context, CGRectMake(0, 0, imageSize->x/2, imageSize->y/2), cgImage);
CFRelease(cgImage);
CFRelease(bitmapContext);
}
ich durch die Pixel Looping betrachtet habe und eine feste Version des Bildes erstellt, aber ich frage mich, ob eine Methode gibt es die y_channel in der richtigen Orientierung (IE: nicht gedreht in 90 Grad) zu erhalten direkt von der Kamera