2012-06-22 17 views
6

Sto lavorando a un'app in cui devo rilevare l'occhio sinistro, l'occhio destro e la posizione della bocca. Ho un imageView sul mio self.view e imageView contiene un'immagine del viso, ora voglio ottenere sia gli occhi che le coordinate della bocca. Ho visto 2-3 codici di esempio per questo, ma sono tutti approssimativamente uguali in tutti i codici che dobbiamo invertire la mia vista per trovare le coordinate che non desidero perché la mia vista ha altri controlli. E un'altra cosa stanno tutti usandoProblema di rilevamento dei volti tramite CIDetector

UIImageView *imageView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"image.png"]]; 

ma my imageView ha frame e non posso iniziarlo con l'immagine. Quando lo faccio ho trovato gli occhi e le coordinate della bocca di FaceFeature sbagliate.

Avevo iniziato il mio codice da this sample code ma in questa vista anche si sta invertendo la sua coordinata Y.

Qualcuno può aiutarmi come posso rilevare gli occhi del viso e la posizione della bocca sull'immagine di UIImageView senza invertire la mia auto.view.

fammi sapere se la mia domanda non è abbastanza chiara.

Qualsiasi aiuto sarebbe apprezzato, grazie in anticipo!

risposta

0

Ha funzionato! - modificato la classe per avere un faceContainer che contiene tutti gli oggetti del viso (la bocca e gli occhi), quindi questo contenitore viene ruotato e questo è tutto. Ovviamente questo è molto grezzo, ma funziona. Ecco un link, http://www.jonathanlking.com/download/AppDelegate.m. Quindi sostituire il delegato dell'app dal codice di esempio con esso.

- Old Post -

Date un'occhiata a questo Apple Documentation, e far scorrere 42 in poi da this apple talk. Probabilmente dovresti anche guardare il talk in quanto ha una demo di quello che stai cercando di ottenere, si chiama "Using Core Image su iOS & Mac OS X" ed è here.

+0

grazie per la tua risposta, ma cosa stai cercando di spiegare? so come rilevare faceFeature con gli occhi e la posizione della bocca con CGImage, la mia domanda è diversa, ho problemi con l'uiimage di uiimageview. – TheTiger

+0

Scusa, hai completamente frainteso la tua domanda! –

+0

per niente ..... :-) – TheTiger

1

Il trucco qui è quello di trasformare i punti e i limiti restituiti da CIDetector alle tue coordinate, invece di capovolgere la tua vista. CIImage ha origine in basso a sinistra, che è necessario per trasformare in alto a sinistra

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 

Per la vostra seconda domanda su UIImageView, devi solo fare

imageview.image = yourImage 

Dopo aver inizializzato l'ImageView

Problemi correlati