在網上,以及一些視頻軟體裡面,我們都可以看見將人像轉變為漫畫的軟體,那我們可不可以自己來做一個呢!那還等什麼,來看一看吧
#python#
材料準備
按照我們之前的操作,我們都是需要先準備材料。
1、requests模塊
2、某度ai接口(https://ai.baidu.com/ai-doc/IMAGEPROCESS/Mk4i6olx5)
ok,材料已經準備好了,那我們來說一下思路 吧!
思路分析
實現,我們需要人像轉漫畫,似乎我們自己寫一個,以目前的能力來說,還不太現實,那我們只能去掉調用比人的了。經過查找材料,以及確定範圍,於是,找到了比較好的方案。
1、我們調用某度的ai接口。接口需要進行加密,以及ak和sk。
2、登錄ai平臺,並創建對應的應用,得到ak,sk並獲取access_token
3、返回圖片之後,因為是base64編碼,所以需要轉碼並輸出圖片。
代碼過程
1、獲取access_token.
import base64import requests client_id="aRWG06XOZ13d6hVVKx7pefwtX"client_secret="8UiNMlYI313dYPZpeW3Pxna2hkiCrBEIG"# client_id 為官網獲取的AK, client_secret 為官網獲取的SKhost = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id='+client_id+'&client_secret='+client_secret response = requests.get(host)if response: access_token=response.json()["access_token"]
2、人像轉漫畫
''' 人像動漫化 '''request_url = "https://aip.baidubce.com/rest/2.0/image-process/v1/selfie_anime"# 二進位方式打開圖片文件f = open('C:\\Users\\Administrator\\Pictures\\12.jpg', 'rb') img = base64.b64encode(f.read()) params = {"image":img} request_url = request_url + "?access_token=" + access_token headers = {'content-type': 'application/x-www-form-urlencoded'} response = requests.post(request_url, data=params, headers=headers)if response: img_base64=response.json()["image"]
3、base64轉圖片輸出
img_base64=response.json()["image"] img= base64.b64decode(img_base64) with open('001.png', 'wb') as f: f.write(img)
以上,我們就完整搞定了人像轉漫畫的過程。
完整代碼奉上
# encoding:utf-8import base64import requestsdefaccess_token(): client_id="aRWG06XOZ13d6hVVKx7pefwtX" client_secret="8UiNMlYI313dYPZpeW3Pxna2hkiCrBEIG"# client_id 為官網獲取的AK, client_secret 為官網獲取的SK host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id='+client_id+'&client_secret='+client_secret response = requests.get(host) if response: return response.json()["access_token"]defportrait_cartoon(old_img,new_img):#old_img人像圖片地址,new_img漫畫圖片地址。'''人像動漫化''' request_url = "https://aip.baidubce.com/rest/2.0/image-process/v1/selfie_anime"# 二進位方式打開圖片文件 f = open(old_img, 'rb') img = base64.b64encode(f.read()) params = {"image":img} request_url = request_url + "?access_token=" + access_token() headers = {'content-type': 'application/x-www-form-urlencoded'} response = requests.post(request_url, data=params, headers=headers) if response: img_base64=response.json()["image"] img= base64.b64decode(img_base64) with open(new_img, 'wb') as f: f.write(img)if __name__ == '__main__': portrait_cartoon("C:/img.jpg","D:/new_img.jpg")
歡迎關注我們!《大家一起學編程》