텐센트 AI 플랫폼을 이용한 안면 인식

2781 단어
최근 github에서 wangshub의 틱톡 로봇이 인기가 많아서 코드를 참고했습니다.얼굴 인식 부분을 꺼내 백업을 하니 재미있다.자신의 블로그에 개인 얼굴 인식 데모를 설치할 예정이다.
import hashlib
import urllib
from urllib import parse
import urllib.request
import base64
import json
import time

url_preffix='https://api.ai.qq.com/fcgi-bin/'


def setParams(array, key, value):   #      
    array[key] = value


def genSignString(parser):
    '''
        ai        
              md5  ,           
    '''
    uri_str = ''
    for key in sorted(parser.keys()):
        if key == 'app_key':
            continue
        uri_str += "%s=%s&" % (key, parse.quote(str(parser[key]), safe=''))
    sign_str = uri_str + 'app_key=' + parser['app_key']

    hash_md5 = hashlib.md5(sign_str.encode('utf-8'))
    return hash_md5.hexdigest().upper()


class AiPlat(object):
    def __init__(self,app_id = '    ID',app_key = '    KEY'):
        self.app_id = app_id
        self.app_key = app_key
        self.data = {}
        self.url_data = ''

    def invoke(self, params):
        self.url_data = urllib.parse.urlencode(params).encode("utf-8")  #      url     
        req = urllib.request.Request(self.url, self.url_data)  #  ai  
        try:
            rsp = urllib.request.urlopen(req)  #  ai,       rsp 
            str_rsp = rsp.read() #  rsp  ,   str_rsp 
            dict_rsp = json.loads(str_rsp) #      json  ,      
            return dict_rsp
        except Exception as e:
            print(e)
            return {'ret': -1}

    def face_detectface(self, image, mode):
        self.url = url_preffix + 'face/face_detectface'
        setParams(self.data, 'app_id', self.app_id)  # self.data     app_id
        setParams(self.data, 'app_key', self.app_key)  # self.data     app_key
        setParams(self.data, 'mode', mode)  # self.data     mode
        setParams(self.data, 'time_stamp', int(time.time()))  # self.data     time_stamp
        setParams(self.data, 'nonce_str', int(time.time()))  # self.data     nonce_str
        image_data = base64.b64encode(image)  #       
        setParams(self.data, 'image', image_data.decode("utf-8")) #          utf-8  ,  image
        sign_str = genSignString(self.data)  #  self.data    hash(MD5) 
        setParams(self.data, 'sign', sign_str)   #     hash ,  sign
        return self.invoke(self.data) #  self.invoke    self.data,     


ai_obj = AiPlat()  #   AI  
with open('1.jpg', 'rb') as bin_data:   #        
    image_data = bin_data.read()     #     image_data 
    rsp = ai_obj.face_detectface(image_data, 0)  #     AI,rsp AI      ,    
    print(rsp)

좋은 웹페이지 즐겨찾기