Esempio n. 1
0
def process_face_groups(image):
    faces = yield from FaceUtils.detect_faces_in_photo(
        Utils.get_user_path(image['user_id']) + "/" + image['image_name'])
    Logger.debug('processing: ' + Utils.get_user_path(image['user_id']) + "/" +
                 image['image_name'])
    #     faces = yield from FaceUtils.detect_faces_in_photo("e:/data/images/" + image['image_name'])
    #     Logger.debug('processing: ' + "e:/data/images/" + image['image_name'])
    if len(faces) == 0 or len(faces) > 10:
        return

    names = Utils.get_human_names(image.get('desc', ''))
    names.reverse()
    tags = image.get('tags', [])
    for face in faces:
        face_id = ''
        similars = yield from FaceUtils.find_similar_faces(
            image['user_id'], face)
        Logger.debug('similars: ' + str(similars))

        for simi in similars:
            conf = simi['confidence']
            if conf >= 0.9:
                face_id = simi['faceId']
                break

        if not face_id:
            Logger.debug('no face id detected')
            face_id = face
            yield from FaceUtils.add_face_to_group(image['user_id'], face)
            try:
                name = names.pop()
            except:
                name = ''

            face_info = {
                'user_id': image['user_id'],
                'face_id': face,
                'name': name,
                'candidates': similars
            }
            for simi in similars:
                fid = simi['faceId']
                sm = MongoHelper.get_person(image['user_id'], fid)
                smcd = [i['faceId'] for i in sm['candidates']]
                if not fid in smcd:
                    sm['candidates'].append({
                        'faceId': face,
                        'confidence': simi['confidence']
                    })
                MongoHelper.save_person(sm)

            MongoHelper.save_person(face_info)

        if not face_id in tags:
            tags.append(face_id)

    image['tags'] = tags
    Logger.debug('tags: ' + str(tags))
def process_face_groups(image):
    faces = yield from FaceUtils.detect_faces_in_photo(Utils.get_user_path(image['user_id']) + "/" + image['image_name'])
    Logger.debug('processing: ' + Utils.get_user_path(image['user_id']) + "/"  + image['image_name'])
#     faces = yield from FaceUtils.detect_faces_in_photo("e:/data/images/" + image['image_name'])
#     Logger.debug('processing: ' + "e:/data/images/" + image['image_name'])
    if len(faces) == 0 or len(faces) > 10:
        return
    
    names = Utils.get_human_names(image.get('desc', ''))
    names.reverse()
    tags = image.get('tags', [])
    for face in faces:
        face_id = ''
        similars = yield from FaceUtils.find_similar_faces(image['user_id'], face)
        Logger.debug('similars: ' + str(similars))
        
        for simi in similars:
            conf = simi['confidence']
            if conf >= 0.9:
                face_id = simi['faceId']
                break
            
        if not face_id:
            Logger.debug('no face id detected')
            face_id = face
            yield from FaceUtils.add_face_to_group(image['user_id'], face)
            try:
                name = names.pop()
            except:
                name = ''
                
            face_info = {'user_id':image['user_id'], 'face_id':face, 'name':name, 'candidates': similars}
            for simi in similars:
                fid = simi['faceId']
                sm = MongoHelper.get_person(image['user_id'], fid)
                smcd = [i['faceId'] for i in sm['candidates']]
                if not fid in smcd:
                    sm['candidates'].append({'faceId': face, 'confidence': simi['confidence']})
                MongoHelper.save_person(sm)
                
            MongoHelper.save_person(face_info)

        if not face_id in tags:
            tags.append(face_id)
        
    image['tags'] = tags
    Logger.debug('tags: ' + str(tags))