iOS使用低AVCaptureSessionPreset进行视频输出时捕获高分辨率照片

时间:2014-07-15 12:37:36

标签: ios objective-c image-processing avfoundation avcapturesession

我和下面的问题几乎相同:

Switching AVCaptureSession preset when capturing a photo

但问题是(自我)答案对我有所帮助。我想知道是否有人知道如何做到这一点。

我正在捕捉视频帧,所以我可以处理它们并用它们做点什么。为此,我正在使用AVCaptureSessionPrese640x480,因为我需要获得所有帧速率,同时获得一个合适的计算帧。现在,当用户想要拍摄照片时,我希望他能够以尽可能高的分辨率拍摄照片。为此,我不赞成:

[captureSession beginConfiguration];
captureSession.sessionPreset = <some_preset>
[captureSession commitConfiguration];

我试过这个,在某些情况下我收到错误;但由于某些原因,屏幕上仍有明显的滞后现象,我不再相信这一点。

在以非常低的分辨率(例如640x480)拍摄视频输出时,是否有明确的方法从相机获取高分辨率图像?

2 个答案:

答案 0 :(得分:2)

对于iPhone6和iPhone6 +,您可以使用新的API [AVCaptureStillImageOutput setHighResolutionStillImageOutputEnabled:YES] 当此标志打开时(默认情况下处于关闭状态),您可以在使用低分辨率捕获会话时捕获高分辨率静止图像。

答案 1 :(得分:1)

您可以将 AVCapturePhotoOutput 添加到 AVCaptureSession 对象,并将其 highResolutionCaptureEnabled 属性设置为YES。在捕获期间,您可以使用AVCapturePhotoOutput的 capturePhotoWithSettings 消息通过传递 AVCapturePhotoSettings 对象和 AVCapturePhotoCaptureDelegate 来捕获图像。通过使用AVCapturePhotoSettings对象,您可以进一步修改捕获属性,如 flashMode autoStillImageStabilizationEnabled highResolutionPhotoEnabled 。用法显示在AVCamManual example

相关问题