The*_*ger 15 iphone camera objective-c avcapturesession ios5
我正在努力AVCaptureSession捕捉图像.它的工作正常但没有给出好的分辨率.我将它与iPhone相机拍摄的图像进行了比较,我发现iPhone相机图像比AVCaptureSession图像要好得多.
我在stackOverflow上看到过3-4个关于此的链接,但找不到任何解决方案.
我也试过了所有的预设
AVCaptureSessionPresetPhoto,
AVCaptureSessionPresetHigh,
AVCaptureSessionPresetMedium,
AVCaptureSessionPresetLow,
AVCaptureSessionPreset352x288,
AVCaptureSessionPreset640x480,
AVCaptureSessionPreset1280x720,
AVCaptureSessionPreset1920x1080,
AVCaptureSessionPresetiFrame960x540,
AVCaptureSessionPresetiFrame1280x720,
Run Code Online (Sandbox Code Playgroud)
但是静止图像质量较差.如果我的问题不够明确或者我错过了什么,请告诉我.
Bra*_*son 13
当使用具有AVCaptureStillImageOutput的预设AVCaptureSessionPresetPhoto时,我能够以3268x2448的分辨率在iPhone 4S上捕获图像,这与内置相机应用程序产生的分辨率完全相同.对于iPhone 4,Retina iPad等也是如此,因此如果您将该预设与静止图像输入一起使用,您将获得一个样本缓冲区,-captureStillImageAsynchronouslyFromConnection:completionHandler:即原始相机分辨率.
关于照片质量,请记住内置相机应用程序能够通过快速采集不同曝光级别的图像来捕捉高动态范围(HDR)照片.我们无法通过标准的AV Foundation API访问它,因此我们得到的只是一个定义曝光级别的图像.
如果关闭HDR,图像质量看起来与我相同.以下是使用AVCaptureStillImageOutput捕获的照片的放大部分:

这是内置照片应用程序中的一个:

忽略由于相机方向稍微偏移导致的照明轻微差异,两种方式拍摄的图像的分辨率和保真度看起来都是相同的.
我使用来自我的开源GPUImage框架的SimplePhotoFilter示例应用程序捕获了第一个图像,将默认的GPUImageSketchFilter替换为没有调整任何伽玛值的GPUImageGammaFilter,只是充当了直通.
只需在您的文件中添加此行代码即可
self.captureSession.sessionPreset = AVCaptureSessionPresetPhoto
Run Code Online (Sandbox Code Playgroud)
您将获得一个很棒的分辨率,如苹果的集成相机应用程序.
小智 6
我们使用该代码引用时遇到了同样的问题.使用iPad前置摄像头拍摄的照片特别糟糕.
我们通过在设置捕获管理器和调用捕获图像方法之间添加1秒的延迟来修复它.它给我们带来了很大的不同,我们对结果感到满意.看来相机需要一些时间来打开快门并执行自动对焦/白平衡默认选项.
[NSTimer scheduledTimerWithTimeInterval:1.0
target:self.captureManager
selector:@selector(captureStillImage)
userInfo:nil repeats:NO];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13044 次 |
| 最近记录: |