2012-06-22 43 views
6

Estoy trabajando en una aplicación en la que tengo que detectar el ojo izquierdo, el ojo derecho y la posición de la boca. Tengo una imageView en mi self.view y imageView contiene una imagen de la cara, ahora quiero obtener las coordenadas de los ojos y la boca. He visto 2-3 códigos de muestra para esto, pero todos son aproximadamente iguales en todos los códigos que tenemos para invertir mi vista para que coincida con las coordenadas que no quiero porque mi vista tiene algunos otros controles. Y una cosa más que todos están usandoProblema de detección de la cara con CIDetector

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

pero mi imageView tiene marco y no puedo iniciarlo con la imagen. Cuando lo hago, encuentro que las coordenadas de los ojos y la boca de faceFeature están equivocadas.

Había comenzado mi código desde this sample code pero en este también se está invirtiendo la vista de su coordenada Y.

¿Alguien me puede ayudar? ¿Cómo puedo detectar la posición de los ojos y la boca en la imagen de UIImageView sin invertir mi visión propia?

avísame si mi pregunta no es lo suficientemente clara.

Cualquier ayuda sería apreciada, ¡Gracias de antemano!

Respuesta

0

Lo resolvió! - editado la clase para tener un faceContainer que contiene todos los objetos de la cara (la boca y los ojos), luego este contenedor se gira y eso es todo. Obviamente esto es muy crudo, pero funciona. Aquí hay un enlace, http://www.jonathanlking.com/download/AppDelegate.m. Luego reemplace el delegado de la aplicación del código de muestra con él.

- ANTIGUA POSTAL -

Tener un vistazo a este Apple Documentation, y deslice 42 en adelante de this apple talk. También debería ver la charla, ya que tiene una demostración de lo que está tratando de lograr, se llama "Usar Core Image en iOS & Mac OS X" y es here.

+0

gracias por su respuesta, pero ¿qué está tratando de explicar? Sé cómo detectar FaceFeature ojos y la posición de la boca con CGImage, mi pregunta es diferente, tengo un problema con la uiimage de uiimageview. – TheTiger

+0

Lo siento, ¡malentendí completamente su pregunta! –

+0

en absoluto ..... :-) – TheTiger

1

El truco aquí es transformar los puntos y los límites devueltos de CIDetector a sus coordenadas, en lugar de voltear su propia vista. CIImage tiene origen en la parte inferior izquierda, que necesitará para transformar a la parte superior izquierda

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 

Para su segunda pregunta acerca UIImageView, sólo hay que hacer

imageview.image = yourImage 

Después de haber inicializado el imageview

Cuestiones relacionadas