avcapturesession

___ answer7932657 ___

Heh, es scheint, dass niemand Lust hatte, hier mitzuspielen. Stellt sich heraus, die Antwort ist einfach. Bilder, die mit der Methode %code% erfasst werden, haben immer die folgenden Eigenschaften:

  • UIImage orientation = immer UIImageOrientationRight unabhängig von der Geräteausrichtung
  • UIIMagnetgröße = B x H (z. B. Hochformat x Hochformat, hängt von Ihrer Kameraauflösung ab)
  • CGImage size = hängt von der Geräteausrichtung ab (z. B. Hoch- oder Querformat)

Die Lösung zum Drehen des Bildes besteht also darin, die Geräteausrichtung in Verbindung mit der CGImage-Größe zu verwenden, um eine geeignete affine Transformation anzuwenden. Da ich meine eigene Frage beantworte, bin ich nicht die Lösung im Code, aber ich habe am Ende eine Routine geschrieben:

%Vor%

in einer UIImage-Kategorie mit verschiedenen Bildverarbeitungsverbesserungen.

EDIT - Implementierungsbeispiel

Ich habe eine Reihe von Anfragen für Funktionscode erhalten. Ich habe die relevante Implementierung aus einer funktionierenden App extrahiert.

%Vor%     
___ answer9491477 ___

Warum Sie AVCaptureVideoOrientationLandscape Richtig brauchen, wenn die Ausrichtung des Geräts UIDeviceOrientationLandscape Left lautet, liegt das daran, dass UIDeviceOrientationLandscape Left == UIInterfaceOrientationLandscape Richtig und die AVCaptureVideoOrientations folgen der UIInterfaceOrientation-Konvention.

Außerdem enthält UIDeviceOrientation andere Optionen wie UIDeviceOrientationFaceUp, UIDeviceOrientationFaceDown und UIDeviceOrientationUnknown. Wenn Sie Ihre Benutzeroberfläche drehen lassen, um sie an die Ausrichtung des Geräts anzupassen, können Sie versuchen, die UIDeviceOrientation stattdessen von [UIApplication sharedApplication] .statusBarOrientation abzurufen.

    
___ answer39794572 ___

Tatsächlich gibt es keinen Fehler in Ihrer Implementierung und Sie können den gesamten Switch-Fall eliminieren.

Warum die Groß- und Kleinschreibung vermieden werden kann:

Die entsprechenden Werte der Geräte- und Videoausrichtungen sind numerisch gleich, d. h. solange die Geräteausrichtung nicht unbekannt ist, können Sie UIDeviceOrientation und AVCaptureVideoOrientation

gleichsetzen

Über die verwirrende Nomenklatur:

Geräteausrichtung LandscapeLeft = & gt; Die Oberseite Ihres Telefons befindet sich auf der linken Seite.

Stellen Sie sich also vor, wo der Ausgangspunkt des Videos ist ..... das ist richtig, TOP RIGHT corner = & gt; Landschaft rechts.

Auch in der anderen Querformatausrichtung ist die Videoausrichtung von der Oberseite des Telefons entfernt. Dies ist nicht verwirrend im Falle eines Portraits und auf dem Kopf stehend

Beweis

Wenn Sie ein Standbild aufnehmen, überprüfen Sie den EXIF-Wert für die Ausrichtung. Für die linke Landschaft ist die EXIF-Ausrichtung 3 (180 Grad Inversion) Für Querformat rechts ist die EXIF-Ausrichtung 1 (keine Drehung)

Wenn Sie anzeigen, wird Ihre Exif-Ausrichtung in die entsprechende UIImageOrientation konvertiert, so dass es keine Inversion geben sollte.

Im Fall der Frontkamera habe ich bemerkt, dass EXIF-Werte einfach den Video-Orientierungswerten folgen (Spiegeleffekt wird nicht beachtet). Es werden nur 1, 3, 6, 8 Werte von EXIF ​​verwendet.

Auch der Spiegel ist immer entlang der Linie von der Oberseite des Geräts nach unten Die Landschaft wird also auf den Kopf gestellt, während das Porträt und das umgedrehte Porträt nur gespiegelt sind.

    
___ tag123iphone ___ Verwenden Sie diesen Tag NICHT, es sei denn, Sie wenden sich speziell an Apple's iPhone und / oder iPod touch. Verwenden Sie für nicht hardwareabhängige Fragen das Tag [ios]. Weitere zu betrachtende Tags sind [xcode] (aber nur, wenn es sich um die IDE selbst handelt), [swift], [objective-c] oder [cacao-touch] (aber nicht [cocoa]). Bitte verzichten Sie auf Fragen zum iTunes App Store oder zu iTunes Connect. Wenn Sie C # verwenden, markieren Sie mit [mono]. ___ tag123ios ___ iOS ist das mobile Betriebssystem, das auf dem Apple iPhone, iPod touch und iPad ausgeführt wird. Verwenden Sie dieses Tag [ios] für Fragen zur Programmierung auf der iOS-Plattform. Verwenden Sie die verwandten Tags [objective-c] und [swift] für Probleme, die für diese Programmiersprachen spezifisch sind. ___ tag123avcapturedevice ___ AVCaptureDevice repräsentiert ein physisches Aufnahmegerät und die Eigenschaften, die diesem Gerät zugeordnet sind. Sie verwenden ein Erfassungsgerät, um die Eigenschaften der zugrunde liegenden Hardware zu konfigurieren. ___ tag123imagecapture ___ hilf uns dieses Wiki zu bearbeiten ___ qstnhdr ___ Warum führen AVCaptureVideoOrientation-Landschaftsmodi zu verdrehten Standbildern? ___ tag123avcapturessession ___ iPhone - Um eine Echtzeit- oder Offline-Erfassung durchzuführen, instanziieren Sie ein AVCaptureSession-Objekt und fügen entsprechende Eingaben (z. B. AVCaptureDeviceInput) und Ausgaben (z. B. AVCaptureMovieFileOutput) hinzu. ___ qstntxt ___

Ich verwende AVFoundation-Klassen, um eine benutzerdefinierte Kamera in meiner App zu implementieren. Ich nehme nur Standbilder auf, nicht Video. Ich habe alles in Ordnung, bin aber von etwas überrascht. Ich berücksichtige die Geräteausrichtung, wenn ein Standbild aufgenommen wird, und stelle die Videoausrichtung der Videoverbindung entsprechend ein. Ein Code-Snippet:

%Vor%

Beachten Sie meine Kommentare in den Landschaftsfällen. Ich muss das Orientierungsmapping umkehren oder das resultierende Bild steht auf dem Kopf. Ich erfasse und speichere das Bild mit dem folgenden Code:

%Vor%

Es gibt keine andere Bildverarbeitung oder Manipulation.

Meine App funktioniert mit dem obigen Code. Ich versuche nur zu verstehen, warum die Orientierungskonstanten für Querformat-Orientierungen umgekehrt werden müssen. Danke!

    
___
1
Antwort

UIImage von AVCaptureMetadataOutput-Delegat (didOutputMetadataObjects)

Ich scanne QR Code & amp; Barcode mit AVCaptureMetadataOutput . Wenn dann die Kamera auf den Barcode fokussiert ist, wird didOutputMetadataObjects delegate aufgerufen und ich kann die Barcode-Metadaten-Zeichenfolge abrufen. Aber ich frage m...
11.05.2014, 17:13
1
Antwort

AVAudioSession AVAudioSessionCategoryPlayAndRecord Fehler

Ich möchte Videos mit Audio mit AVCaptureSession aufnehmen. Dafür benötige ich die AudioSessionCategory AVAudioSessionCategoryPlayAndRecord , da meine App auch Video mit Ton wiedergibt. Ich möchte, dass Audio vom Standardlautsprecher hör...
23.12.2014, 00:36
1
Antwort

Unterbrechen und Fortsetzen der Videoaufnahme mit AVCaptureMovieFileOutput und AVCaptureVideoDataOutput in iOS

Ich muss die Funktionalität implementieren, um die Videoaufnahme in einer einzelnen Sitzung wiederholt anzuhalten und fortzusetzen, aber jedes neue Segment (die erfassten Segmente nach jeder Pause) mit AVFoundation der gleichen Videodatei hin...
06.08.2013, 06:58
1
Antwort

AVCaptureSession Die stopRunning-Methode erzeugt einen schrecklichen Hang

Ray Wenderlichs QRCode-Reader aus Kapitel 22 der iOS7-Tutorials , ich lese erfolgreich QRCodes für meine aktuelle App. Ich erweitere es nun, dass ich nach dem erfolgreichen Lesen eines QRCodes das stringValue des gelesenen AVMetadataMachine...
22.10.2013, 18:02
2
Antworten

Bilder, die mit der Kamera aufgenommen wurden, sind bei iOS mit Swift sehr dunkel

Die Vorschau der Kamera sieht perfekt aus, aber wenn ich ein Foto mache und es in der Kamerarolle speichere, wird das Bild extrem dunkel. Habe hier ein paar Threads versucht, aber nichts hat es gelöst. Hier ist mein Code. Dies richtet die Kam...
29.03.2015, 19:57
2
Antworten

Wie konvertiere ich von einem CVPixelBufferRef zu einem openCV cv :: Mat

Ich möchte ein paar Operationen an einem CVPixelBufferRef durchführen und mit einem cv::Mat auskommen auf eine Region von Interesse zuschneiden skaliert auf eine feste Dimension entzerrt das Histogramm konvertiert in Graustufen -...
14.10.2013, 10:57
3
Antworten

iphone Kamera zeigen Fokusrechteck

Ich klicke Apples Kamera-App mit AVCaptureSession basierend auf dem AppCam App-Beispiel von Apple. Das Problem ist, dass ich das Fokusrechteck im Videovorschau-Bildschirm nicht sehen kann. Ich habe folgenden Code zum Einstellen des Fokus verwend...
05.04.2013, 16:00
1
Antwort

Ermöglicht die Musikwiedergabe während der Aufnahme von Videos wie Snapchat-IOS

Zuerst möchte ich das Szenario in snapchat diskutieren. In Snapchat, wenn Sie die Videoaufnahme starten und der Song im Hintergrund läuft; Sie können dieses Lied während der Videoaufnahme fortsetzen und nachdem Sie dieses Video aufgenommen...
25.02.2015, 09:39
2
Antworten

AvFoundation - Wie verbindet man AVCaptureSession und AVAssetWriter?

Ich versuche, AVCaptureSession zu verwenden, um Video von der Kamera zu erfassen, und dann möchte ich AVAssetWriter verwenden, um die Ergebnisse in eine Datei zu schreiben (verwenden Sie mehrere AVAssetWriters, um die Aufnahme in Chunk-Videos zu...
08.04.2013, 22:11
2
Antworten

Fokus (Autofokus) funktioniert nicht in der Kamera (AVFoundation AVCaptureSession)

Ich verwende Standard-AVFoundation-Klassen, um Videos aufzunehmen und eine Vorschau anzuzeigen ( Ссылка ) ) Hier ist mein Code: %Vor% Alles funktioniert, aber manchmal hat es einige Probleme: Der Kamera-Fokus funktioniert nicht - Es f...
22.03.2011, 12:28