Ios iPhone摄像头原始数据处理代码
我是iOS编程新手,我想知道是否有办法使用AVFoundation或Xcode中的其他库从相机访问10位或12位原始数据?如果是,怎么做Ios iPhone摄像头原始数据处理代码,ios,xcode,camera,Ios,Xcode,Camera,我是iOS编程新手,我想知道是否有办法使用AVFoundation或Xcode中的其他库从相机访问10位或12位原始数据?如果是,怎么做 谢谢大家! 如果可以将图像加载到UIImage中,则可以使用核心图形来获取像素缓冲区。我怀疑它会以每像素16位的形式存储在内存中,但试试看 UIImage *image = ... CGImageRef imageRef = image.CGImage; // get the CGIma
谢谢大家! 如果可以将图像加载到
UIImage
中,则可以使用核心图形来获取像素缓冲区。我怀疑它会以每像素16位的形式存储在内存中,但试试看
UIImage *image = ...
CGImageRef imageRef = image.CGImage; // get the CGImageRef
NSAssert(imageRef, @"Unable to get CGImageRef");
CGDataProviderRef provider = CGImageGetDataProvider(imageRef); // get the data provider
NSAssert(provider, @"Unable to get provider");
NSData *data = CFBridgingRelease(CGDataProviderCopyData(provider)); // get copy of the data
NSAssert(data, @"Unable to copy image data");
NSInteger bitsPerComponent = CGImageGetBitsPerComponent(imageRef); // some other interesting details about image
NSInteger bitsPerPixel = CGImageGetBitsPerPixel(imageRef);
CGBitmapInfo bitmapInfo = CGImageGetBitmapInfo(imageRef);
NSInteger bytesPerRow = CGImageGetBytesPerRow(imageRef);
NSInteger width = CGImageGetWidth(imageRef);
NSInteger height = CGImageGetHeight(imageRef);
CGColorSpaceRef colorspace = CGImageGetColorSpace(imageRef);
有关更多信息,请参阅。您需要为摄像头捕获设置一个
AVCaptureSession
,然后使用代理功能:
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection
要捕获原始图像数据(sampleBuffer),请参阅:Hi,Rob。
CGImageRef
和CGDataProviderRef
是否在此处提供不同的图像数据?它们有何不同?谢谢。CGImageRef
定义了更多的高级信息(宽度、高度、每像素位数、位图信息(例如是RGBA还是ARGB或…)。CGDataProviderRef
提供逐像素数据。因此,获取CGImageRef
,并使用它来获取该图像的CGDataProviderRef
。注意,不要将此误认为“生的"文件。但是一旦它被转换成UIImage
/CGImageRef
,这就是你获取像素数据的方式。我总是错误地认为raw
文件就是CGDataProviderRef
?raw文件只包含像素信息,对吗?忘了我在哪里读到的了。谢谢。这取决于你的意思n由“raw”表示。在相机世界中,“raw”通常指制造商(通常为专有)的格式(如尼康NEF、佳能CRW等)。它包括许多其他内容(EXIF和其他元数据、JPG缩略图等)。CGDataProviderRef只包含逐像素和逐通道的数据,而不包含其他信息。因此,例如,如果您确实需要知道相机是否捕获了每个通道8、10、12或14位,CGProviderRef
是不够的。如果您只需要知道它捕获了什么,那么它可能就可以了。只需要一个u从iPhone 5S的后置摄像头获得的有关AVFoundation格式的更新只能有三种格式:1.KCVPIXELFMORMATTYPE_420YPCBCCR8BIPLANARFULLRANGE 2.KCVPIXELFMORMATTYPE_420YPCBCCR8BIPLANARVIDEORANGE 3.KCVPIXELFMORMATTYPE_32BGRA