CVPixelBufferLockBaseAddress
2014-10-30 11:59
1151 查看
// 通过抽样缓存数据创建一个UIImage对象 - (UIImage *) imageFromSampleBuffer:(CMSampleBufferRef) sampleBuffer { // 为媒体数据设置一个CMSampleBuffer的Core Video图像缓存对象 CVImageBufferRef imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer); // 锁定pixel buffer的基地址 CVPixelBufferLockBaseAddress(imageBuffer, 0); // 得到pixel buffer的基地址 void *baseAddress = CVPixelBufferGetBaseAddress(imageBuffer); // 得到pixel buffer的行字节数 size_t bytesPerRow = CVPixelBufferGetBytesPerRow(imageBuffer); // 得到pixel buffer的宽和高 size_t width = CVPixelBufferGetWidth(imageBuffer); size_t height = CVPixelBufferGetHeight(imageBuffer); //NSLog(@"%zu,%zu",width,height); // 创建一个依赖于设备的RGB颜色空间 CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); // 用抽样缓存的数据创建一个位图格式的图形上下文(graphics context)对象 CGContextRef context = CGBitmapContextCreate(baseAddress, width, height, 8, bytesPerRow, colorSpace, kCGBitmapByteOrder32Little | kCGImageAlphaPremultipliedFirst); // 根据这个位图context中的像素数据创建一个Quartz image对象 CGImageRef quartzImage = CGBitmapContextCreateImage(context); // 解锁pixel buffer CVPixelBufferUnlockBaseAddress(imageBuffer,0); // 释放context和颜色空间 CGContextRelease(context); CGColorSpaceRelease(colorSpace); // cgimageget` // 用Quartz image创建一个UIImage对象image //UIImage *image = [UIImage imageWithCGImage:quartzImage]; UIImage *image = [UIImage imageWithCGImage:quartzImage scale:1.0f orientation:UIImageOrientationRight]; // 释放Quartz image对象 CGImageRelease(quartzImage); return (image); }
相关文章推荐
- Convert UIImage to CVPixelBufferRef
- UIimage的缩放,马赛克处理,CVPixelBufferRef 转换为UIimage
- CVPixelBufferRef与UIImage的互相转换
- 重要经验八---UIImage转换为CVPixelBufferRef
- 从ffmpeg的AVFrame得到iOS的CVPixelBuffer
- WinCE dll base address
- sap 文档连接更改(不能保存) note_879519:CV115_DOC_SAVE_BUFFER
- 0.driverbase-IRP、IO_STACK_LOCATION、文件三种读写方式(buffer/driect/other)、DeviceIoControl
- OpenGL Pixel Buffer Object (PBO)
- Lock-less buffer management scheme for telecommunication network applications
- 英语名词解释:Base.Address
- 解决niosII中下载提示Connected system ID hash not found on target at expected base address问题
- WCF技术剖析之六:为什么在基于ASP.NET应用寄宿(Hosting)下配置的BaseAddress无效
- cve2012-1876 leak mshtml base address and leak shellcode base address
- piix4_smbus 0000:00:07.0: SMBus base address uninitialized - upgrade BIOS or use force_addr=0xaddr
- informix 初始化时shared memory base address illegal问题解决
- 复制原理图的时候最后弹出这样的错误 InvalidParameter at 2510219C. AdvSch.dll, Base Address: 24C80000. Exception Occurr
- 当使用Firebase时出现警告 How to remove the Xcode warning Apple Mach-O Linker Warning 'Pointer not aligned at address
- struct kobj_map *kobj_map_init(kobj_probe_t *base_probe, struct mutex *lock)
- CString里的LockBuffer 和 unLockBuffer的作用是什么啊?