2012-06-22 7 views
6

Ich arbeite an einer App, in der ich linke Auge, rechtes Auge und Mundposition erkennen muss. Ich habe ein ImageView auf meinem self.view und imageView enthält ein Gesichtsbild, jetzt möchte ich beide Augen und Mundkoordinaten bekommen. Ich habe 2-3 Beispielcodes für dieses gesehen, aber alle sind ungefähr gleich in allen Codes, die wir meine Ansicht umkehren müssen, um die Koordinaten zusammenzubringen, die ich nicht will, weil meine Ansicht einige andere Kontrollen hat. Und noch eine Sache, die sie alle verwenden:Gesichtserkennung Problem mit CIDetector

aber mein ImageView hat Frame und ich kann es nicht mit Bild init. Als ich das tat, fand ich FaceFeature Augen und Mund Koordinaten falsch.

Ich hatte meinen Code von this sample code gestartet, aber in dieser Ansicht wird auch seine Y-Koordinate invertiert.

Kann mir jemand helfen, wie ich die Gesichtsaugen und die Mundposition auf dem Bild von UIImageView erkennen kann, ohne mein Selbst zu invertieren.

lassen Sie mich wissen, wenn meine Frage nicht klar genug ist.

Jede Hilfe würde geschätzt werden, Vielen Dank im Voraus!

Antwort

0

Ausgearbeitet! - die Klasse editiert, um einen FaceContainer zu haben, der alle Gesichtsobjekte (den Mund und die Augen) enthält, dann wird dieser Container gedreht und das ist alles. Offensichtlich ist das sehr grob, aber es funktioniert. Hier ist ein Link, http://www.jonathanlking.com/download/AppDelegate.m. Ersetzen Sie dann den Anwendungsdelegaten durch den Beispielcode.

- ALTE POST -

Werfen Sie einen Blick auf diese Apple Documentation und schieben 42 weiter von this apple talk. Auch sollten Sie wahrscheinlich das Gespräch zu sehen, wie es eine Demo von dem hat, was Sie erreichen möchten, es heißt "Verwenden von Core Image auf iOS & Mac OS X" und ist here.

+0

danke für deine Antwort, aber was versuchst du zu erklären? Ich weiß, wie man FaceFeature Augen und Mundposition mit CGImage erkennen kann, meine Frage ist anders, ich habe Problem mit uiimageview uiimage. – TheTiger

+0

Entschuldigung, deine Frage völlig missverstanden! –

+0

gar nicht ..... :-) – TheTiger

1

Der Trick besteht darin, die zurückgegebenen Punkte und Grenzen von CIDetector in Ihre Koordinaten zu transformieren, anstatt Ihre eigene Ansicht zu spiegeln. CIImage hat Ursprung in der linken unteren, die Sie an die Spitze zu transformieren müssen links

int height = CVPixelBufferGetHeight(pixelBuffer); 
CGAffineTransform transform = CGAffineTransformMakeScale(1, -1); 
transform = CGAffineTransformTranslate(transform, 0, -1 * height); 

/* Do your face detection */ 

CGRect faceRect = CGRectApplyAffineTransform(feature.bounds, transform); 
CGPoint mouthPoint = CGPointApplyAffineTransform(feature.mouthPosition, transform); 
// Same for eyes, etc 

Für Ihre zweite Frage zu UIImageView, man muss nur

imageview.image = yourImage 

tun Nachdem Sie Ihre Imageview

initialisiert