我正在与AVCaptureSession合作来捕获图像。它工作得很好,但没有给出很好的解决方案。我将其与iPhone相机捕获的图像进行了比较,发现iPhone相机图像比AVCaptureSession图像要好得多。
我已经在stackOverflow上看到了3-4个关于这个问题的链接,但没有找到任何解决方案。
我也试过了所有的预置
AVCaptureSessionPresetPhoto,
AVCaptureSessionPresetHigh,
AVCaptureSessionPresetMedium,
AVCaptureSessionPresetLow,
AVCaptureSessionPreset352x288,
AVCaptureSessionPreset640x480,
AVCaptureSessionPreset1280x720,
AVCaptureSessionPreset1920x1080,
AVCaptureSessionPresetiFrame960x540,
AVCaptureSessionPresetiFrame1280x720, 但静止图像的质量较差。如果我的问题不够清楚或者我漏掉了什么,请告诉我。
发布于 2012-06-10 04:46:40
在AVCaptureStillImageOutput上使用预设的AVCaptureSessionPresetPhoto时,我能够在iPhone 4S上以3268x2448的分辨率拍摄图像,这与内置相机应用程序产生的分辨率完全相同。对于iPhone 4,Retina iPad等也是如此,所以如果你将该预设与静止图像输入一起使用,你将从-captureStillImageAsynchronouslyFromConnection:completionHandler:获得一个样本缓冲区,这是相机的本机分辨率。
关于照片质量,请记住,内置相机应用程序能够通过快速获取不同曝光级别的图像来捕获高动态范围(HDR)照片。我们不能通过标准的AV Foundation API访问它,所以我们得到的只是一个定义曝光级别的图像。
如果你关闭HDR,图像质量对我来说是一样的。以下是使用AVCaptureStillImageOutput捕获的照片的放大部分:

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

忽略由于相机方向的微小变化而导致的照明上的细微差异,两种方式捕获的图像的分辨率和保真度似乎是相同的。
我使用来自my open source GPUImage framework的SimplePhotoFilter示例应用程序捕获了第一张图像,用一个不调整gamma的GPUImageGammaFilter替换了默认的GPUImageSketchFilter,只是充当了一个通过。
发布于 2016-01-15 05:30:56
只需在您的文件中添加这行代码
self.captureSession.sessionPreset = .photo你会得到一个很棒的分辨率,就像苹果的集成相机应用程序一样。
发布于 2012-06-09 22:45:43
使用该代码引用时,我们也遇到了同样的问题。使用iPad前置摄像头拍摄的照片尤其糟糕。
我们通过在设置捕获管理器和调用捕获映像方法之间添加1秒的延迟来修复它。这对我们来说有很大的不同,我们对结果很满意。相机似乎需要一些时间来打开快门并执行自动对焦/白平衡默认选项。
[NSTimer scheduledTimerWithTimeInterval:1.0
target:self.captureManager
selector:@selector(captureStillImage)
userInfo:nil repeats:NO];https://stackoverflow.com/questions/10961521
复制相似问题