|
| 1 | +#!/usr/bin/env python2 |
| 2 | +# -*- coding: utf-8 -*- |
| 3 | +# $File: admin.py |
| 4 | + |
| 5 | +API_KEY = '187aa2ee8fc784972b7302f3b31becab' |
| 6 | +API_SECRET = 'F1czaFXaRJ5VzRcdVNZppUwJpDg4zjUY' |
| 7 | + |
| 8 | +# 导入系统库并定义辅助函数 |
| 9 | +import time |
| 10 | +from pprint import pformat |
| 11 | +def print_result(hint, result): |
| 12 | + def encode(obj): |
| 13 | + if type(obj) is unicode: |
| 14 | + return obj.encode('utf-8') |
| 15 | + if type(obj) is dict: |
| 16 | + return {encode(k): encode(v) for (k, v) in obj.iteritems()} |
| 17 | + if type(obj) is list: |
| 18 | + return [encode(i) for i in obj] |
| 19 | + return obj |
| 20 | + print hint |
| 21 | + result = encode(result) |
| 22 | + print '\n'.join([' ' + i for i in pformat(result, width = 75).split('\n')]) |
| 23 | + |
| 24 | +# 首先,导入SDK中的API类,还有本地文件读取所需要的facepp类 |
| 25 | +from facepp import API |
| 26 | +import facepp |
| 27 | +import os |
| 28 | + |
| 29 | +api = API(API_KEY, API_SECRET) |
| 30 | +#face = api.detection.detect(img = facepp.File('3.jpg')) |
| 31 | + |
| 32 | +# 步骤0:人名及其脸部图片,此部分,读取目录下picture文件夹,中通过获取每文件夹的路径和名字,完成PERSONS字典的构建。 |
| 33 | + |
| 34 | +dir = os.getcwd()+'/picture' |
| 35 | +a = os.listdir(dir) |
| 36 | +print(a) |
| 37 | +PERSONS = [] |
| 38 | +for name in a: |
| 39 | + print (name) |
| 40 | + dir_temp = dir +'/'+name |
| 41 | + b = os.listdir(dir_temp) |
| 42 | + print(b) |
| 43 | + for img_name in b: |
| 44 | + if img_name[-1] != 'g': |
| 45 | + continue |
| 46 | + dir_img =dir_temp+'/'+img_name |
| 47 | + print (dir_img) |
| 48 | + f = open(dir_temp+'/name.txt') |
| 49 | + a = f.read() |
| 50 | + f.close() |
| 51 | + dir_temp |
| 52 | + yuan = (a,facepp.File(dir_img)) |
| 53 | + PERSONS.append(yuan) |
| 54 | +print (PERSONS) |
| 55 | + |
| 56 | +# IMAGE_DIR 此部分则是选择出需要进行分析的图片。。管理员模式下不用设置实用。(可能有文件打开错误的bug,如果本身没有end.jpg的话。) |
| 57 | +TARGET_IMAGE = facepp.File('end.jpg') |
| 58 | + |
| 59 | +# 步骤1:检测出输入图片中的Face,找出图片中Face的位置及属性 |
| 60 | + |
| 61 | +FACES = {name: api.detection.detect(img = url) |
| 62 | + for name, url in PERSONS} |
| 63 | + |
| 64 | +for name, face in FACES.iteritems(): |
| 65 | + print_result(name, face) |
| 66 | + |
| 67 | + |
| 68 | +# 步骤2:引用face_id,创建新的person |
| 69 | +for name, face in FACES.iteritems(): |
| 70 | + rst = api.person.create( |
| 71 | + person_name = name, face_id = face['face'][0]['face_id']) |
| 72 | + print_result('create person {}'.format(name), rst) |
| 73 | + |
| 74 | + |
| 75 | +# 步骤3:.创建Group,将之前创建的Person加入这个Group |
| 76 | + |
| 77 | +rst = api.group.create(group_name = 'test') |
| 78 | +print_result('创建一个群组--test', rst) |
| 79 | +rst = api.group.add_person(group_name = 'test', person_name = FACES.iterkeys()) |
| 80 | +print_result('添加人到群组中', rst) |
| 81 | + |
| 82 | + |
| 83 | +# 步骤4:训练模型 |
| 84 | +rst = api.train.identify(group_name = 'test') |
| 85 | +print_result('开始训练请等待', rst) |
| 86 | + |
| 87 | +# 等待训练完成 |
| 88 | +rst = api.wait_async(rst['session_id']) |
| 89 | +print_result('等待异步训练完成', rst) |
| 90 | + |
| 91 | +''' |
| 92 | +# 步骤5:识别新图中的Face |
| 93 | +rst = api.recognition.identify(group_name = 'test', img = TARGET_IMAGE) |
| 94 | +print_result('recognition result', rst) |
| 95 | +print '=' * 60 |
| 96 | +print 'The person with highest confidence:', \ |
| 97 | + rst['face'][0]['candidate'][0]['person_name'] |
| 98 | +''' |
| 99 | +# 最终,删除无用的person和group |
| 100 | + |
| 101 | +#api.group.delete(group_name = 'test') |
| 102 | +#api.person.delete(person_name = FACES.iterkeys()) |
| 103 | + |
| 104 | + |
| 105 | + |
0 commit comments