Je saisis le canal YUV depuis l'iPhone au format kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange (YUV, bi-planaire).Orientation du canal Yhone IPhone
Je l'intention de traiter le canal y, donc je le saisir à l'aide
CVImageBufferRef pixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer);
CVPixelBufferLockBaseAddress(pixelBuffer, 0);
int bufferHeight = CVPixelBufferGetHeight(pixelBuffer);
int bufferWidth = CVPixelBufferGetWidth(pixelBuffer);
uint8_t *y_channel = CVPixelBufferGetBaseAddressOfPlane(pixelBuffer, 0);
Le problème est que les pixels y_channel apparaît en rotation et en miroir (je les dessiner sur une couche de recouvrement pour voir ce que l'apparence comme :
- (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);
}
J'ai examiné en boucle à travers les pixels et créé une version fixe de l'image, mais je me demande s'il y a une méthode pour obtenir la y_channel dans l'orientation correcte (IE: non tourné en 90 degrés) directement à partir de l'appareil photo