python—呼叫API人臉識別
#-*- coding: utf-8 -*-
import urllib.request
import urllib.error
import time
import re
#json 互動協議
import json
import cv2 as cv
import numpy as np
http_url = 'https://api-cn.faceplusplus.com/facepp/v3/detect'
key = 建立的API key的API key
secret = 建立的API key的API Secret
#影像地址
path_name = 影像地址
filepath = r''+path_name
#將時間變成十六進位制
boundary = '----------%s' #% hex(int(time.time() * 1000))
data = []
#boundary邊界
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)
#二進位制方法讀取 'rb
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' % boundary)
#return_landmark 是否檢測並返回人臉關鍵點
data.append('Content-Disposition: form-data; name="%s"\r\n' % 'return_landmark')
'''
0 不檢測
1 檢測,返回 83 個人臉關鍵點
2 檢測,返回 106 個人臉關鍵點
'''
data.append('1')
data.append('--%s' % boundary)
#return_attributes 是否檢測並返回根據人臉特徵判斷出的年齡、性別、情緒等屬性
data.append('Content-Disposition: form-data; name="%s"\r\n' % 'return_attributes')
data.append(
"gender,age,smiling,headpose,facequality,blur,eyestatus,emotion,ethnicity,beauty,mouthstatus,eyegaze,skinstatus")
data.append('--%s--\r\n' % boundary)
#改變編碼格式
for i, d in enumerate(data):
if isinstance(d, str):
data[i] = d.encode('utf-8')
http_body = b'\r\n'.join(data)
# 生成HTTP請求
req = urllib.request.Request(url=http_url, data=http_body)
# header
req.add_header('Content-Type', 'multipart/form-data; boundary=%s' % boundary)
try:
# 將資料釋出到伺服器
resp = urllib.request.urlopen(req, timeout=5)
#得到響應
qrcont = resp.read()
# 如果你想載入為JSON,你應該先解碼
# for example: json.loads(qrcont.decode('utf-8'))
qrcont = qrcont.decode('utf-8')
#將字串解碼變成字典
qrcont =json.loads(qrcont)
# print(qrcont)
cv.namedWindow('img',cv.WINDOW_NORMAL)
'''
不帶中文路徑的影像
img = cv.imread(path)
'''
#讀取帶中文路徑的影像
img = cv.imdecode(np.fromfile(path_name,dtype=np.uint8),1)
# 圖上新增文字
font = cv.FONT_HERSHEY_SIMPLEX
for i in range(len(qrcont['faces'])):
dis = qrcont['faces'][i]['face_rectangle']
#木有購買API的使用許可權,所以只能顯示前五個識別出來的年齡等
if i < 5:
age = qrcont['faces'][i]['attributes']['age']
#影像上新增文字
cv.putText(img, str(age['value']), (dis['left'], dis['top']), font, 4, (98,170,255), 2)
#畫矩形框
cv.rectangle(img, (dis['left'], dis['top']), (dis['left']+dis['width'], dis['top']+dis['height']), (255, 255, 119), 3)
cv.imshow('img',img)
cv.waitKey(0)
except urllib.error.HTTPError as e:
print(e.read().decode('utf-8'))
相關文章
- Python人臉識別微笑檢測Python
- python ubuntu dlib人臉識別3-人臉對齊PythonUbuntu
- 人臉識別之Python DLib庫進行人臉關鍵點識別Python
- OpenCV-Python 人臉眼睛嘴識別OpenCVPython
- opencv 人臉識別OpenCV
- python ubuntu dlib 5 -人臉識別並打分PythonUbuntu
- 人臉檢測識別,人臉檢測,人臉識別,離線檢測,C#原始碼C#原始碼
- windows環境下python人臉識別初窺WindowsPython
- 人臉識別之特徵臉方法(Eigenface)特徵
- SAP官方提供的人臉識別APIAPI
- C#人臉識別入門篇-STEP BY STEP人臉識別--入門篇C#
- 智慧人臉識別門禁系統開發,人臉識別開鎖流程
- 【專案】Python人臉識別(GUI介面)—— 基於pyopencvPythonGUIOpenCV
- [Python急救站]人臉識別技術練習Python
- python ubuntu人臉識別 -1 SVM binary 分類器PythonUbuntu
- python3+arcface2.0 離線人臉識別 demoPython
- Python-OpenCV人臉識別之資料集生成PythonOpenCV
- 前端人臉識別--兩張臉相似度前端
- 人臉活體檢測人臉識別:眨眼+張口
- 如何評價美顏api中人臉識別和人臉檢測的準確度?API
- 美顏api中2D人臉識別的技術流程API
- 乾貨 | AI人臉識別之人臉搜尋AI
- 人臉識別智慧考勤系統開發_人臉識別考勤管理系統開發
- python ubuntu dlib 人臉識別11-物體追蹤PythonUbuntu
- python Ubuntu dlib 人臉識別9-輔助函式PythonUbuntu函式
- 手把手教你 python 人臉識別自動開機Python
- java 呼叫百度人臉對比api介面JavaAPI
- 從零玩轉人臉識別
- 前端如何玩轉人臉識別前端
- 人臉識別技術應用
- Python3呼叫百度OCR圖片文字識別APIPythonAPI
- 人臉識別之人臉檢測的重要性
- 妙招:使用Python實現圖片在人臉識別並顯示Python
- 保障人臉安全!頂象釋出《人臉識別安全白皮書》
- 刷臉支付人臉識別特徵點越多是別越精確特徵
- python示例 呼叫影象識別服務識別影象Python
- TensorFlow2.0 + CNN + keras + 人臉識別CNNKeras
- 人臉識別系列(三):DeepID2