Я захватываю канал YUV с IPhone в формате kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange (YUV, двух планарный).Ориентация канала IPhone YUV
Я намерен обработать у-канал, так что я захватить его с помощью
CVImageBufferRef pixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer);
CVPixelBufferLockBaseAddress(pixelBuffer, 0);
int bufferHeight = CVPixelBufferGetHeight(pixelBuffer);
int bufferWidth = CVPixelBufferGetWidth(pixelBuffer);
uint8_t *y_channel = CVPixelBufferGetBaseAddressOfPlane(pixelBuffer, 0);
Проблема в том, что y_channel пикселей появляется поворачиваются и зеркальные (я рисую их на накладываемого слоя, чтобы увидеть, что внешний вид, как :
- (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);
}
Я рассмотрел цикл по пикселям и создал исправленную версию изображения, но мне интересно, если есть способ, чтобы получить y_channel в правильной ориентации (IE: не вращается в 90 градусов) прямо с камеры.