【Python呼叫Face++ API的人臉識別】
阿新 • • 發佈:2019-02-07
Face++是一套成熟的人臉檢測、識別和跟蹤等視覺技術服務平臺,每個人在Face++的官網註冊賬號後可以申請新建API,隨後會分配API key和 API Secrect,這樣我們就可以使用這些API進行簡單的人臉識別了。
原文連結傳送門
程式碼如下:
# coding=UTF-8 import cv2 import urllib import urllib2 import time # 讀取影象 image = cv2.imread('girls.jpg') # URL http_url='https://api-cn.faceplusplus.com/facepp/v3/detect' # 使用者資訊 key = '06LVocdF5FVMyNkMRknGzXYlMf_N-MUA' secret = 'WAi7gNtc3NPwpf-iHGUk9pxjxyws43aq' # 圖片儲存路徑 filepath = 'girls.jpg' # 呼叫API介面 boundary = '----------%s' % hex(int(time.time() * 1000)) data = [] data.append('--%s' % boundary) data.append('Content-Disposition: form-data; name="%s"\r\n' % 'api_key') data.append(key) data.append('--%s' % boundary) data.append('Content-Disposition: form-data; name="%s"\r\n' % 'api_secret') data.append(secret) data.append('--%s' % boundary) fr=open(filepath,'rb') data.append('Content-Disposition: form-data; name="%s"; filename=" "' % 'image_file') data.append('Content-Type: %s\r\n' % 'application/octet-stream') data.append(fr.read()) fr.close() data.append('--%s--\r\n' % boundary) http_body='\r\n'.join(data) # buld http request req = urllib2.Request(http_url) # header req.add_header('Content-Type', 'multipart/form-data; boundary=%s' % boundary) req.add_data(http_body) try: # req.add_header('Referer','http://remotserver.com/') # post data to server resp = urllib2.urlopen(req, timeout=5) # get response qrcont=resp.read() print qrcont # 打印出得到的結果 except urllib2.HTTPError as e: print e.read() # 進過測試前面的程式會返回一個字典,其中指出了人臉所在的矩形的位置和大小等,所以直接進行標註 mydict = eval(qrcont) faces = mydict["faces"] faceNum = len(faces) print("識別到了%d個人臉"%( faceNum )) for i in range(faceNum): face_rectangle = faces[i]['face_rectangle'] width = face_rectangle['width'] top = face_rectangle['top'] left = face_rectangle['left'] height = face_rectangle['height'] start = (left, top) end = (left+width, top+height) color = (255,55,55) thickness = 5 cv2.rectangle(image, start, end, color, thickness) cv2.namedWindow("Detection:") cv2.imshow("Detection:", image) cv2.waitKey(0) cv2.destroyAllWindows()
結果如下圖: