您的位置:首页 > 运维架构

在Widora-OpenWRT上试用百度人脸识别API

2017-08-17 19:39 411 查看
    在Widora-OpenWRT平台上试用了一下百度人脸识别API,感觉还可以,人脸识别的准确率还是挺高的。进行人脸识别之前,你必须先注册人员的图片,人脸识别其实是和你先注册的人脸图片进行比对,并给出一个相似度分值,分值达到80就基本可以判定是同一人了。

    先注册了3张图片:(用命令 ./face.py -add  Linus_Torvalds  linus.jpg )

    


    然后分别对另外的三张图片进行识别,结果如下:

   


    

下面直接给出python源码

#-------------------------------face.py------------------------------------------

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import sys, urllib, urllib2, json

#------ following SSL set may not be neccessary, depending on your python version 

import ssl

ssl._create_default_https_context = ssl._create_unverified_context

data = {}

#------ your BAIDU API access_toke  -----------

str_token='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

def request_baidu(url,data):

   print '//------ start urlencode data ...'

   decoded_data = urllib.urlencode(data)

   print '//------ start request() ...'

   req = urllib2.Request(url, decoded_data)

   req.add_header("Content-Type","application/x-www-form-urlencoded")

   print '//------ start urlopen() ...It may take a while....'

   resp = urllib2.urlopen(req)

   content = resp.read()

   return content

#--------- detect faces -------

# Example: ./face.py -det julia.jpg

if sys.argv[1]=='-det':

   url ='https://aip.baidubce.com/rest/2.0/face/v1/detect?access_token='+ str_token

   data['max_face_num'] = 5

   data['face_fields'] = "age,beauty,expression,faceshape,gender";

   print '//------ start read  image data ...'

   image_data = open(sys.argv[2],'rb').read()

   data['image'] = image_data.encode('base64').replace('\n','')

   content=request_baidu(url,data)

   json_content=json.loads(content)

   num = int(json_content['result_num'])

   for i in range(0,num):

      print 'Person %d --- age:%s, bueaty:%s, gender:%s' % \
        (i,json_content['result'][i]['age'],json_content['result'][i]['beauty'],json_content['result'][i]['gender'])
  print 'Location %s' % json_content['result'][i]['location']

#--------- add and register a faces -------

# default: old face data will be replaced.

# Example: ./face.py -add  Linus_Torvalds  linus.jpg

elif sys.argv[1]=='-add':

   url ='https://aip.baidubce.com/rest/2.0/face/v2/faceset/user/add?access_token=' + str_token

   #data['uid'] = "Linus_Torvalds"

   data['uid'] = sys.argv[2]

   data['user_info'] = "father of Linux"

   data['group_id'] = "linux_group"

   data['action_type'] = "replace"

   print '//------ start read  image data ...'

   image_data = open(sys.argv[3],'rb').read()

   data['image'] = image_data.encode('base64').replace('\n','')

   content=request_baidu(url,data)

   print content

#--------- get info of a registed user -------

# Example: ./face.py -get Linus_Torvalds

elif sys.argv[1]=='-get':

   url ='https://aip.baidubce.com/rest/2.0/face/v2/faceset/user/get?access_token=' + str_token

   #data['uid'] = "Linus_Torvalds"

   data['uid'] = sys.argv[2]

   content=request_baidu(url,data)

   print content

#------- list all registed users in a specified group -----

# Example: ./face.py -get_users linux_group 

elif sys.argv[1]=='-get_users':

   url ='https://aip.baidubce.com/rest/2.0/face/v2/faceset/group/getusers?access_token=' + str_token

   data['group_id'] = sys.argv[2]

   content=request_baidu(url,data)

   json_content=json.loads(content)

   num = int(json_content['result_num'])

   for i in range(0,num):
print '%d: %s  ---  %s'% (i,json_content['result'][i]['uid'],json_content['result'][i]['user_info'])

#--------- identify a face  -------

# Example: ./face.py -id ruhau.jpg

elif sys.argv[1]=='-id':

   url ='https://aip.baidubce.com/rest/2.0/face/v2/identify?access_token=' + str_token

   data['group_id'] = "linux_group"

   data['user_top_num'] = 2

   print '//------ start read  image data ...'

   image_data = open(sys.argv[2],'rb').read()

   data['image'] = image_data.encode('base64').replace('\n','')

   content=request_baidu(url,data)

   json_content=json.loads(content)

   num = int(json_content['result_num'])

   for i in range(0,num):
print '%d: %s    scores: %d    group: %s'% \

       (i,json_content['result'][i]['uid'],json_content['result'][i]['scores'][0],json_content['result'][i]['group_id'])

else:

   print 'command syntax error! check your option'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: