· 6 years ago · Jun 01, 2019, 04:20 AM
1# -*- coding: utf-8 -*-
2
3from aip import AipFace
4import base64
5import os
6import time
7
8APP_ID = ''
9API_KEY = ''
10SECRET_KEY = ''
11OPTIONS = {
12 'max_face_num': 1,
13 'face_field': "age,beauty,gender",
14}
15
16
17
18class FaceDectecter(object):
19 def __init__(self):
20 self.aipFace = AipFace(APP_ID, API_KEY, SECRET_KEY)
21 pass
22
23 def by_file(self, file):
24 content = self.image_file_base64(file)
25 try:
26 result = self.aipFace.detect(content, "BASE64", OPTIONS)
27 return self.parsed_result(result)
28 except:
29 return None
30
31 def parsed_result(self, result):
32 if result is None or result['error_msg'] != u'SUCCESS':
33 return None
34 face = result['result']['face_list'][0]
35 return {
36 'gender': face['gender']['type'],
37 'beauty': face['beauty'] / 10.0,
38 'age': face['age']
39 }
40
41 def image_file_base64(self, file):
42 with open(file, 'rb') as fp:
43 return str(base64.b64encode(fp.read()))
44
45
46def main(file_dir):
47 file_list = []
48 for f in os.listdir(file_dir):
49 fpath = os.path.join(file_dir, f)
50 if os.path.isfile(fpath):
51 file_list.append(fpath)
52 print u'共搜索到%d张图片,由于SDK限制,预计需要%d分钟'%(len(file_list), int(len(file_list) / 2 / 60))
53
54 for f in file_list:
55 result = FaceDectecter().by_file(f)
56 if result is None:
57 os.remove(f)
58 continue
59 ok = (result['gender'] == u'female' and result['age'] < 35 and result['beauty'] > 5)
60 if not ok:
61 os.remove(f)
62 continue
63 gender_str = u'女' if result['gender'] == u'female' else u'男'
64 save_str = u'滚粗' if not ok else u'保留'
65
66 print f, u'性别:', gender_str, u'年龄: %d'%result['age'], u'分数: %.2f'%result['beauty'], '=>', save_str
67 time.sleep(0.4)
68
69if __name__ == "__main__":
70 want_file_dir = u'E:/Code/zhihuMM/275359100_你的择偶标准是怎样的'
71 main(want_file_dir)