インターフェイスを使用する必要があります:
顔情報を取得するためのインターフェイス:https://api-cn.faceplusplus.com/facepp/v3/detect
顔の変更のためのインターフェースを実現します:https://api-cn.faceplusplus.com/imagepp/v1/mergeface
コードは3つのステップに分かれています
コード:
import requests
import json
import simplejson
import base64
# ステップ1:顔の要点を取得する
def find_face(imgpath):"""
: param imgpath:写真の住所
: return:辞書タイプの面の要点は次のとおりです。{'top':156,'left':108,'width':184,'height':184}"""
http_url ='https://api-cn.faceplusplus.com/facepp/v3/detect' #顔情報を取得するためのインターフェース
data ={"api_key":"x2NyKaa6vYuArYwat4x0-NpIbM9CrwGU",#URLにアクセスするために必要なパラメータ
" api_secret":"OuHx-Xaey1QrORwdG7QetGG5JhOIC8g7",#URLにアクセスするために必要なパラメータ
" image_url":imgpath, #地図の住所
" return_landmark":1}
files ={'image_file':open(imgpath,'rb')} #写真を保存する辞書のアドレスを定義する
response = requests.post(http_url,data=data,files=files)
res_con1 = response.content.decode('utf-8')
res_json = simplejson.loads(res_con1)
faces = res_json['faces']
list = faces[0]
rectangle = list['face_rectangle']return rectangle
# ステップ2:顔の変化を実現する
def merge_face(image_url1,image_url2,image_url,number):"""
: param image_url1:変更された顔のイメージパス
: param image_url2:顔の変化のための画像パス
: param image_url:顔を変えた後、写真が保存されるパス
: param number:顔の変化の類似性
"""
# 最初に2つの写真の顔の要点を取得します
face1 =find_face(image_url1)
face2 =find_face(image_url2)
# 顔を文字列形式に変換する
rectangle1 =str(str(face1['top'])+","+str(face1['left'])+","+str(face1['width'])+","+str(face1['height']))
rectangle2 =str(str(face2['top'])+","+str(face2['left'])+","+str(face2['width'])+","+str(face2['height']))
# 2枚の写真を読む
f1 =open(image_url1,'rb')
f1_64 = base64.b64encode(f1.read())
f1.close()
f2 =open(image_url2,'rb')
f2_64 = base64.b64encode(f2.read())
f2.close()
url_add ='https://api-cn.faceplusplus.com/imagepp/v1/mergeface' #顔を変えるインターフェースを実装する
data={"api_key":"x2NyKaa6vYuArYwat4x0-NpIbM9CrwGU","api_secret":"OuHx-Xaey1QrORwdG7QetGG5JhOIC8g7","template_base64":f1_64,"template_rectangle":rectangle1,"merge_base64":f2_64,"merge_rectangle":rectangle2,"merge_rate":number
}
response1 = requests.post(url_add,data=data)
res_con1 = response1.content.decode('utf-8')
res_dict = json.JSONDecoder().decode(res_con1)
result = res_dict['result']
imgdata = base64.b64decode(result)
file=open(image_url,'wb')
file.write(imgdata)
file.close()if __name__ =='__main__':
image1 = r"meizi1.jpg"
image2 = r"meizi.jpg"
image3 = r"face1.jpg"merge_face(image1,image2,image3,100)
効果:
顔を変える前に
変化する顔:
顔を変えた後:
総括する
これまで、PythonでAIフェイスチェンジを実装するためのコードに関するこの記事を紹介しました。AIフェイスチェンジコンテンツのより関連性の高いPython実装については、ZaLou.Cnの以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後もZaLouをサポートしていただければ幸いです。 .Cn!
Recommended Posts