Ich versuche eine Routine zu schreiben, die ein UII-Zeichen verwendet und ein neues UII-Bild zurückgibt, das nur das Gesicht enthält. Das scheint sehr einfach zu sein, aber mein Gehirn hat Probleme, sich in den CoreImage vs. UIImage Räumen zu bewegen.
Hier sind die Grundlagen:
%Vor% Das Bild, das zurückgegeben wird, stammt aus dem umgedrehten Bild. Ich habe versucht, faceFeature.bounds
mit etwas wie folgt anzupassen:
... aber das gibt mir Ergebnisse außerhalb des Bildes.
Ich bin mir sicher, dass es etwas Einfaches gibt, das zu beheben, aber das Berechnen des Bottom-Downs und das Erstellen eines neuen Rect mit dem X ist eine "richtige" Methode, dies zu tun?
Danke!
Da es scheinbar keine einfache Möglichkeit gibt, dies zu tun, habe ich einfach einen Code dafür geschrieben:
%Vor%Das hat einen Reiz bewirkt.
Es ist viel einfacher und weniger chaotisch, einfach CIContext zu verwenden, um Ihr Gesicht aus dem Bild zu schneiden. Etwas wie das:
%Vor%Dabei ist inputImage Ihr UIImage-Objekt und faceFeature -Objekt vom Typ CIFaceFeature, das Sie von der Methode [CIDetector featuresInImage:] erhalten.
Es gibt keine einfache Möglichkeit, dies zu erreichen. Das Problem besteht darin, dass die Bilder von der iPhone-Kamera immer im Hochformat sind und Metadateneinstellungen verwendet werden, um sie korrekt anzuzeigen. Sie erhalten auch eine bessere Genauigkeit in Ihrem Gesichtserkennungsruf, wenn Sie ihm vorher die Drehung des Bildes mitteilen. Um die Dinge kompliziert zu machen, muss man die Bildausrichtung im EXIF-Format übergeben.
Glücklicherweise gibt es ein Apple-Beispielprojekt, das all dies abdeckt: Squarecam , ich schlage vor, dass Sie es für Details überprüfen
Tags und Links ios xcode core-graphics face-detection