123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319 |
- # -*- coding: utf-8 -*-
- """
- 人脸识别
- """
- import re
- import sys
- import math
- import time
- from .base import AipBase
- from .base import base64
- from .base import json
- from .base import urlencode
- from .base import quote
- class AipFace(AipBase):
- """
- 人脸识别
- """
- __detectUrl = 'https://aip.baidubce.com/rest/2.0/face/v3/detect'
- __searchUrl = 'https://aip.baidubce.com/rest/2.0/face/v3/search'
- __multiSearchUrl = 'https://aip.baidubce.com/rest/2.0/face/v3/multi-search'
- __userAddUrl = 'https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/add'
- __userUpdateUrl = 'https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/update'
- __faceDeleteUrl = 'https://aip.baidubce.com/rest/2.0/face/v3/faceset/face/delete'
- __userGetUrl = 'https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/get'
- __faceGetlistUrl = 'https://aip.baidubce.com/rest/2.0/face/v3/faceset/face/getlist'
- __groupGetusersUrl = 'https://aip.baidubce.com/rest/2.0/face/v3/faceset/group/getusers'
- __userCopyUrl = 'https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/copy'
- __userDeleteUrl = 'https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/delete'
- __groupAddUrl = 'https://aip.baidubce.com/rest/2.0/face/v3/faceset/group/add'
- __groupDeleteUrl = 'https://aip.baidubce.com/rest/2.0/face/v3/faceset/group/delete'
- __groupGetlistUrl = 'https://aip.baidubce.com/rest/2.0/face/v3/faceset/group/getlist'
- __personVerifyUrl = 'https://aip.baidubce.com/rest/2.0/face/v3/person/verify'
- __videoSessioncodeUrl = 'https://aip.baidubce.com/rest/2.0/face/v1/faceliveness/sessioncode'
-
- def detect(self, image, image_type, options=None):
- """
- 人脸检测
- """
- options = options or {}
- data = {}
- data['image'] = image
- data['image_type'] = image_type
- data.update(options)
- return self._request(self.__detectUrl, json.dumps(data, ensure_ascii=False), {
- 'Content-Type': 'application/json',
- })
-
- def search(self, image, image_type, group_id_list, options=None):
- """
- 人脸搜索
- """
- options = options or {}
- data = {}
- data['image'] = image
- data['image_type'] = image_type
- data['group_id_list'] = group_id_list
- data.update(options)
- return self._request(self.__searchUrl, json.dumps(data, ensure_ascii=False), {
- 'Content-Type': 'application/json',
- })
-
- def multiSearch(self, image, image_type, group_id_list, options=None):
- """
- 人脸搜索 M:N 识别
- """
- options = options or {}
- data = {}
- data['image'] = image
- data['image_type'] = image_type
- data['group_id_list'] = group_id_list
- data.update(options)
- return self._request(self.__multiSearchUrl, json.dumps(data, ensure_ascii=False), {
- 'Content-Type': 'application/json',
- })
-
- def addUser(self, image, image_type, group_id, user_id, options=None):
- """
- 人脸注册
- """
- options = options or {}
- data = {}
- data['image'] = image
- data['image_type'] = image_type
- data['group_id'] = group_id
- data['user_id'] = user_id
- data.update(options)
- return self._request(self.__userAddUrl, json.dumps(data, ensure_ascii=False), {
- 'Content-Type': 'application/json',
- })
-
- def updateUser(self, image, image_type, group_id, user_id, options=None):
- """
- 人脸更新
- """
- options = options or {}
- data = {}
- data['image'] = image
- data['image_type'] = image_type
- data['group_id'] = group_id
- data['user_id'] = user_id
- data.update(options)
- return self._request(self.__userUpdateUrl, json.dumps(data, ensure_ascii=False), {
- 'Content-Type': 'application/json',
- })
-
- def faceDelete(self, user_id, group_id, face_token, options=None):
- """
- 人脸删除
- """
- options = options or {}
- data = {}
- data['user_id'] = user_id
- data['group_id'] = group_id
- data['face_token'] = face_token
- data.update(options)
- return self._request(self.__faceDeleteUrl, json.dumps(data, ensure_ascii=False), {
- 'Content-Type': 'application/json',
- })
-
- def getUser(self, user_id, group_id, options=None):
- """
- 用户信息查询
- """
- options = options or {}
- data = {}
- data['user_id'] = user_id
- data['group_id'] = group_id
- data.update(options)
- return self._request(self.__userGetUrl, json.dumps(data, ensure_ascii=False), {
- 'Content-Type': 'application/json',
- })
-
- def faceGetlist(self, user_id, group_id, options=None):
- """
- 获取用户人脸列表
- """
- options = options or {}
- data = {}
- data['user_id'] = user_id
- data['group_id'] = group_id
- data.update(options)
- return self._request(self.__faceGetlistUrl, json.dumps(data, ensure_ascii=False), {
- 'Content-Type': 'application/json',
- })
-
- def getGroupUsers(self, group_id, options=None):
- """
- 获取用户列表
- """
- options = options or {}
- data = {}
- data['group_id'] = group_id
- data.update(options)
- return self._request(self.__groupGetusersUrl, json.dumps(data, ensure_ascii=False), {
- 'Content-Type': 'application/json',
- })
-
- def userCopy(self, user_id, options=None):
- """
- 复制用户
- """
- options = options or {}
- data = {}
- data['user_id'] = user_id
- data.update(options)
- return self._request(self.__userCopyUrl, json.dumps(data, ensure_ascii=False), {
- 'Content-Type': 'application/json',
- })
-
- def deleteUser(self, group_id, user_id, options=None):
- """
- 删除用户
- """
- options = options or {}
- data = {}
- data['group_id'] = group_id
- data['user_id'] = user_id
- data.update(options)
- return self._request(self.__userDeleteUrl, json.dumps(data, ensure_ascii=False), {
- 'Content-Type': 'application/json',
- })
-
- def groupAdd(self, group_id, options=None):
- """
- 创建用户组
- """
- options = options or {}
- data = {}
- data['group_id'] = group_id
- data.update(options)
- return self._request(self.__groupAddUrl, json.dumps(data, ensure_ascii=False), {
- 'Content-Type': 'application/json',
- })
-
- def groupDelete(self, group_id, options=None):
- """
- 删除用户组
- """
- options = options or {}
- data = {}
- data['group_id'] = group_id
- data.update(options)
- return self._request(self.__groupDeleteUrl, json.dumps(data, ensure_ascii=False), {
- 'Content-Type': 'application/json',
- })
-
- def getGroupList(self, options=None):
- """
- 组列表查询
- """
- options = options or {}
- data = {}
- data.update(options)
- return self._request(self.__groupGetlistUrl, json.dumps(data, ensure_ascii=False), {
- 'Content-Type': 'application/json',
- })
-
- def personVerify(self, image, image_type, id_card_number, name, options=None):
- """
- 身份验证
- """
- options = options or {}
- data = {}
- data['image'] = image
- data['image_type'] = image_type
- data['id_card_number'] = id_card_number
- data['name'] = name
- data.update(options)
- return self._request(self.__personVerifyUrl, json.dumps(data, ensure_ascii=False), {
- 'Content-Type': 'application/json',
- })
-
- def videoSessioncode(self, options=None):
- """
- 语音校验码接口
- """
- options = options or {}
- data = {}
- data.update(options)
- return self._request(self.__videoSessioncodeUrl, json.dumps(data, ensure_ascii=False), {
- 'Content-Type': 'application/json',
- })
-
- __faceverifyUrl = 'https://aip.baidubce.com/rest/2.0/face/v3/faceverify'
- def faceverify(self, images):
- """
- 在线活体检测
- """
- return self._request(self.__faceverifyUrl, json.dumps(images, ensure_ascii=False), {
- 'Content-Type': 'application/json',
- })
- __matchUrl = 'https://aip.baidubce.com/rest/2.0/face/v3/match'
- def match(self, images):
- """
- 人脸比对
- """
- return self._request(self.__matchUrl, json.dumps(images, ensure_ascii=False), {
- 'Content-Type': 'application/json',
- })
|