2016-07-25 4 views
1

Bei der Gesichtserkennung mit CIFaceFeature stieß ich auf ein Problem mit den Grenzen. Beim Versuch, eine Box um das erkannte Gesicht zu legen, wäre der Rahmen immer falsch platziert. Andere Fragen zu Stack Overflow weisen darauf hin, dass die Koordinatensysteme Core Image und UIKit invertiert sind.CIFaceFeature Bounds

Coreimage-Koordinatensystem

UIKit Koordinatensystem

(Diese Bilder sind von https://nacho4d-nacho4d.blogspot.com/2012/03/coreimage-and-uikit-coordinates.html)

Offensichtlich ist dieses System Koordinatendifferenz ist der Grund für den Rahmen misplacement . Jetzt bleiben die x-Achse, die Breite und die Höhe gleich. Der einzige Unterschied ist das y. Andere Antworten auf Stack Overflow schlagen (image height - face y)/2 als die Lösung vor. Dies funktioniert im Allgemeinen, aber für einige Gesichter werden Sie feststellen, dass es völlig falsch ist.

Antwort

1

Entfernen Sie zuerst, dass die Division durch 2. Stellen Sie den origin.y von image.size.height - face.bounds.origin.y tun. Sie werden feststellen, dass die Oberseite des Rahmens nur das Kinn berührt. Alles, was wir tun müssen, ist Konto für die Höhe des Gesichts:

image.size.height - face.bounds.height - face.bounds.origin.y 

Diese Sie perfekt ausgerichtet Frames jedes Mal gibt.

Die Frage bleibt - warum sind diese/2 Antworten falsch? Diese Koordinatenfrage war bei Stack Overflow um 2012-2013 populär. Leute würden mit diesem Code antworten: image.size.height - face.bounds.origin.y. Wie bereits erwähnt, berührt die Oberseite dieses Rahmens das Kinn. Irgendwo entlang der Linie, schlugen einige vor, den ganzen Wert durch 2 zu teilen. Das schien den Rahmen ziemlich gut auf dem Gesicht zu zentrieren. Das wurde zur akzeptierten Antwort auf einige Fragen.

In meiner Prüfung fand ich, dass dies manchmal funktioniert. Zu anderen Zeiten würde der Rahmen jedoch stark ausfallen. Nachdem ich ein wenig nachgedacht hatte, stieß ich auf die richtige Antwort. Hoffentlich setzt dies die Dinge in Ordnung und hilft jedem, der das gleiche Problem hat.

Verwandte Themen