Desarrollo iOS: Face.com+iOS mucho más que CIDetector

Desde iOS5 podemos disfrutar de la clase CIDetector para el reconocimiento facial, apple ha dispuesto un gran esfuerzo para que la implementación de ésta tarea sea fácil para los usuario. Alternativamente tenemos otras librerías como OpenCV que sirve para alcanzar éste mismo objetivo.

CIDetector es una funcionalidad que por sí solo no tiene mucho sentido si no es aplicada a un contexto productivo, por ejemplo en las redes sociales.

Face.com dispone de una API pública que implementa fácilmente el reconocimiento facial con las redes sociales. La API es capaz de analizar (entre otras variables) el estado de ánimo o el género de la persona dispuesta en la foto o interactuar con twitter o facebook para etiquetar a tus amigos y conocidos.

Al no tener un framework para iOS opté por crearme uno propio haciendo una serie de clases que utilizan dicha API. En respuesta a ello implementé facewrapper-iphone. Se trata de un proyecto de código libre que usa los servicios web de face.com, se encuentra disponible en github y alternativamente en la página de descargas de face.com

Al igual que los servicios, el funcionamiento del framework es muy simple, basta que crear un objeto de tipo FWObject en el que se configura el tipo de petición, puede ser REST (imagen albergada en la web) o POST (imagen presente el local):

El objecto FWObject hereda las propiedades de NSObject y tiene propiedades adaptadas a los parámetros necesarios para interactuar con la API de face.com.

FWObject *object = [FWObject new];

    //REST

    NSMutableArray *urlImages = [NSMutableArray new];

    NSURL *urlImage = [NSURL URLWithString:@”http://images.wikia.com/powerrangers/images/f/fe/ActorJohnCho_John_Shea_55027822.jpg”];

    [urlImages addImageToArray:urlImage];

    [object setUrls:urlImages];    

    object.isRESTObject = YES;

    //END REST

        /*

     //POST

     UIImage *image = [UIImage imageNamed:@”girls.jpg”];

     NSMutableArray *images = [[NSMutableArray alloc] init];

     FWImage *fwImage = [[FWImage alloc] initWithData:UIImageJPEGRepresentation(image, 1.0)

     imageName:@”girls”

     extension:@”jpg”

     andFullPath:@””];

     fwImage.tag = 999;

     [images addImagePOSTToArray:fwImage]; 

     [object setPostImages:images];     

     object.isRESTObject = NO;

     //END POST

     */

 

Para realizar la llamada al servicio de reconocimiento simplemente tenemos que llamar al siguiente método:

[[FaceWrapper instance] detectFaceWithFWObject:object 

                               runInBackground:NO

                                completionData:^(NSDictionary *response, int tagImagePost) {

                    //Detection response and tag of the image

}];emás funcionalidades (etiquetado, guardado de etiquetas, etc…) se encuentran explicadas en la documentación del proyecto.

El proyecto está albergado en github y es posible realizar forks para colaborar en el proyecto.

0 0 votos
Article Rating
Subscribe
Notify of
0 Comments
Opiniones Inline
Ver todos los comentarios
0
Me encantaría saber tu opinión, por favor, deja un comentariox
()
x