Nil*_*nch 7 iphone camera image objective-c cgimage
我正在尝试为我的iOS应用程序构建一个图像捕获,但我的CGImage结果不断变色.这是相机预览,正确的颜色.

可乐是红色的,一切都很好.
当我运行快照代码时,我得到了这个:

可乐是蓝色的......这是从哪里来的?
我试着弄乱了一些参数,但最终却没有得到任何图像.这是我的快照代码:
int bitsPerComponent = 8;
int bitsPerPixel = 32;
int bytesPerRow = [cameraVideo bufRowBytes];
CGDataProviderRef provider = CGDataProviderCreateWithData(NULL, [cameraVideo bufDataPtr], [cameraVideo bufWidth]*[cameraVideo bufHeight]*4, NULL);
CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceRGB();
CGBitmapInfo bitmapInfo = kCGImageAlphaNoneSkipLast;
CGColorRenderingIntent renderingIntent = kCGRenderingIntentPerceptual;
CGImageRef imageRef = CGImageCreate( [cameraVideo bufWidth], [cameraVideo bufHeight], bitsPerComponent, bitsPerPixel,
bytesPerRow, colorSpaceRef, bitmapInfo, provider, NULL, NO, renderingIntent);
CGColorSpaceRelease(colorSpaceRef);
Run Code Online (Sandbox Code Playgroud)
我在我的智慧结束,所以如果有人能看到我做错了什么,请告诉我.
固定
这是最终的代码:
if (cameraVideo.ARPixelFormat == kCVPixelFormatType_32ARGB) {
bitmapInfo = kCGBitmapByteOrder32Big | kCGImageAlphaNoneSkipFirst;
} else {
bitmapInfo = kCGBitmapByteOrder32Little | kCGImageAlphaNoneSkipFirst;
}
Run Code Online (Sandbox Code Playgroud)
rob*_*off 12
看起来你的R(红色)和B(蓝色)通道是交换的.相机以BGR顺序填充缓冲区,但您告诉CGImage数据是RGB有序的.我相信你可以使用你的kCGBitmapByteOrder...常量中的一个来控制它CGBitmapInfo.尝试这样设置bitmapInfo:
CGBitmapInfo bitmapInfo = kCGImageAlphaNoneSkipLast | kCGBitmapByteOrder32Big;
Run Code Online (Sandbox Code Playgroud)
如果还是不行,请尝试其他的kCGBitmapByteOrder...常数(kCGBitmapByteOrder32Little,kCGBitmapByteOrder16Big,kCGBitmapByteOrder16Little).
Apple的SquareCam示例项目有一个名为SquareCam/SqareCamViewController.m(是的,"Square"在文件名中拼写错误).它包含以下代码:
sourcePixelFormat = CVPixelBufferGetPixelFormatType( pixelBuffer );
if ( kCVPixelFormatType_32ARGB == sourcePixelFormat )
bitmapInfo = kCGBitmapByteOrder32Big | kCGImageAlphaNoneSkipFirst;
else if ( kCVPixelFormatType_32BGRA == sourcePixelFormat )
bitmapInfo = kCGBitmapByteOrder32Little | kCGImageAlphaNoneSkipFirst;
else
return -95014; // only uncompressed pixel formats
Run Code Online (Sandbox Code Playgroud)
你可能想做同样的事情.
| 归档时间: |
|
| 查看次数: |
2808 次 |
| 最近记录: |