17

私はAVCaptureSession画像をキャプチャするために取り組んでいます。正常に動作しますが、適切な解像度が得られません。iPhoneカメラで撮った画像と比較してみたところ、iPhoneカメラ画像の方がAVCaptureSession画像よりもはるかに優れていることがわかりました。

これについてstackOverflowで3〜4のリンクを見ましたが、解決策が見つかりませんでした。

また、すべてのプリセットを試しました

AVCaptureSessionPresetPhoto, 
AVCaptureSessionPresetHigh, 
AVCaptureSessionPresetMedium, 
AVCaptureSessionPresetLow, 
AVCaptureSessionPreset352x288, 
AVCaptureSessionPreset640x480, 
AVCaptureSessionPreset1280x720, 
AVCaptureSessionPreset1920x1080, 
AVCaptureSessionPresetiFrame960x540, 
AVCaptureSessionPresetiFrame1280x720, 

ただし、静止画像の品質は低くなります。私の質問が十分に明確でない場合、または何かを見逃した場合はお知らせください。

4

3 に答える 3

14

AVCaptureStillImageOutput でプリセット AVCaptureSessionPresetPhoto を使用すると、iPhone 4S で 3268x2448 の解像度で画像をキャプチャできます。これは、組み込みのカメラ アプリケーションが生成する解像度とまったく同じです。同じことが iPhone 4、Retina iPad などにも当てはまります。そのため、そのプリセットを静止画像入力で使用すると、そこから-captureStillImageAsynchronouslyFromConnection:completionHandler:ネイティブ カメラ解像度であるサンプル バッファが返されます。

写真の品質に関しては、組み込みのカメラ アプリケーションには、さまざまな露出レベルで画像をすばやく取得することにより、ハイ ダイナミック レンジ (HDR) の写真をキャプチャする機能があることに注意してください。標準の AV Foundation API を介してこれにアクセスすることはできないため、取得できるのは、定義された露出レベルの 1 つの画像だけです。

HDR をオフにすると、画質は私と同じに見えます。AVCaptureStillImageOutput を使用してキャプチャした写真の拡大部分を次に示します。

AVCaptureStillImage出力画像

組み込みの写真アプリケーションからの 1 つを次に示します。

組み込みの写真画像

カメラの方向のわずかなずれによる照明のわずかな違いを無視すると、両方の方法でキャプチャされた画像の解像度と忠実度は同じに見えます。

オープンソースの GPUImage フレームワークから SimplePhotoFilter サンプル アプリケーションを使用して最初の画像をキャプチャし、デフォルトの GPUImageSketchFilter を、ガンマをまったく調整せず、パススルーとして機能する GPUImageGammaFilter に置き換えました。

于 2012-06-09T20:46:39.517 に答える
12

このコード行をファイルに追加するだけです

self.captureSession.sessionPreset = .photo

Apple の統合カメラ アプリのような素晴らしい解像度が得られます。

于 2016-01-14T21:30:55.793 に答える
6

そのコード参照を使用して同じ問題が発生しました。iPad の前面カメラを使用した写真は特にひどいものでした。

キャプチャ マネージャーのセットアップとキャプチャ イメージ メソッドの呼び出しの間に 1 秒の遅延を追加することで、この問題を修正しました。結果に満足できたのは、私たちにとって十分に大きな違いでした。カメラがシャッターを開き、オートフォーカス/ホワイトバランスのデフォルトオプションを実行するのに時間がかかったようです.

[NSTimer scheduledTimerWithTimeInterval:1.0 
    target:self.captureManager 
    selector:@selector(captureStillImage) 
    userInfo:nil repeats:NO];
于 2012-06-09T14:45:43.200 に答える