2010-09-09 12 views
5

Die Anwendung, die ich gerade benutze, hat eine Hauptfunktionalität, um QR/Barcodes kontinuierlich mit der Zxing Bibliothek (http://code.google.com/p/zxing/) zu scannen. Für die kontinuierliche Rahmenerfassung initialisierte ich die AVCaptureSession- und AVCaptureVideoOutput-, AVCaptureVideoPreviewLayer -Version, die in dem Apfel Q & A http://developer.apple.com/iphone/library/qa/qa2010/qa1702.html beschrieben ist.AV-Kamera-Vorschau-Ebene wird herangezoomt, wie verkleinert?

Mein Problem ist, wenn ich die Kameravorschau ausgeführt habe, ist das Bild, das ich durch das Videogerät sehe, viel größer (1,5x) als das Bild, das wir durch die Standbildkamera des iPhone sehen können. Unser Kunde muss das iPhone beim Scannen in einer Entfernung von ca. 5 cm vom Barcode halten, aber wenn Sie das iPhone an diesen Parameter halten, ist der gesamte QR-Code nicht sichtbar und die Decodierung schlägt fehl. Warum vergrößert die Videokamera im iPhone 4 das Bild (durch den AVCaptureVideoPreviewLayer)?

Antwort

4

Ich beantworte meine eigene Frage noch einmal. Dies wurde nicht einmal im Apple Dev Forum beantwortet, daher habe ich direkt eine technische Supportanfrage von Apple eingereicht und sie haben geantwortet, dass dies ein bekanntes Problem ist und behoben werden und mit einer zukünftigen Version veröffentlicht werden. Es gibt also nichts, was wir mehr tun können als warten und sehen.

+0

Haben Sie Glück dabei? – user281300

5

Sie sehen das gleiche Verhalten mit der integrierten iPhone Camera App. Wechseln Sie zwischen Standbild- und Videoaufnahmemodi und Sie werden feststellen, dass sich die Standardzoomstufe ändert. Im Standbildmodus wird eine größere Ansicht angezeigt, während der Videomodus ein wenig vergrößert wird.

Meine Vermutung ist, dass kontinuierliche Videoaufnahme einen kleineren Bereich des Kamerasensors verwenden muss, um optimal zu arbeiten. Wenn es den ganzen Sensor benutzt, könnte das System vielleicht 30 fps nicht aushalten. Wenn Sie einen kleineren Bereich des Sensors verwenden, wird die Szene "herangezoomt".

13

Dies ist eine Funktion der Videovoreinstellung AVCaptureSession, auf die mit der Eigenschaft .sessionPreset zugegriffen werden kann. Zum Beispiel, nach dem captureSession konfigurieren, aber bevor er gestartet wird, würde hinzufügen Sie

captureSession.sessionPreset = AVCaptureSessionPresetPhoto; 

der Dokumentation finden Sie hier:

iOS Reference Document

Die Standard-Voreinstellung für Video ist 1280x720 (glaube ich), welches eine niedrigere Auflösung als das von der Kamera unterstützte Maximum. Mit der Voreinstellung "Foto" erhalten Sie die rohen Kameradaten.

+0

Prost, ich habe ursprünglich die Sitzungsvoreinstellung im Block eingestellt, als eine Bilderfassung gemacht wurde. So kam das erste Bild immer größer. –

Verwandte Themen