python實戰之百度智能雲使人像動漫化
一、目標
之前無意中看到有某位博主寫過人像動漫化這樣的文章,看著還挺好玩,所以我也想嘗試一下。
利用百度智能雲中的人工智能,對圖片進行處理達到人像動漫化的效果。
二、準備工作
1.百度雲智能賬號創建
2.圖像特效應用
3.開發環境python3.7+pycharm
首先要註冊一個百度智能雲賬號,並創建這個圖像特效應用
三、操作流程
3.1 閱讀官方文檔
當我們要使用一個我們不太瞭解的東西時,閱讀官方文檔無疑是最重要的,官方文檔一般都寫的特別詳細,對每一個功能描述的很細節,我們先來看一下
而且這裡有案例,這裡我使用的是python
3.2 開始實現鑒權
因為調用這麼個接口api要進行鑒權,就是官方文檔說得到access_token,如何鑒權呢?
import requests import pprint def get_access_token(id,secret): get_access_token_url='https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id='+id+'&client_secret='+secret response=requests.get(get_access_token_url) pprint.pprint(response.json()) id='*******************' secret='******************' get_access_token(id,secret)
這裡的id和secret就是創建應用的appkey和secretkey:
上述代碼打印結果有很多,閱讀官網文檔得知,我們這裡隻需要得到access_token就OK瞭
修改上述代碼以獲取access_token
import requests def get_access_token(id,secret): get_access_token_url='https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id='+id+'&client_secret='+secret response=requests.get(get_access_token_url) content=response.json() access_token=content['access_token'] print(access_token) id='*******************' secret='******************' get_access_token(id,secret)
3.3 人像動漫化實現
正片開始
修改代碼
import requests import pprint import base64 def get_access_token(id,secret): get_access_token_url='https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id='+id+'&client_secret='+secret response=requests.get(get_access_token_url) content=response.json() access_token=content['access_token'] return access_token def Animation(img_file,access_token): request_url='https://aip.baidubce.com/rest/2.0/image-process/v1/selfie_anime' f=open(img_file,'rb') image=base64.b64encode(f.read()) params = {"image":image} 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) pprint.pprint(response.json()) def main(): img_file = '1.jpg'#圖片地址 id = '**************************' secret = '**************************' access_token = get_access_token(id, secret) Animation(img_file, access_token) if __name__ == '__main__': main()
這時可以得到一系列的返回值
我們這裡隻要image
獲取image值
修改代碼
import requests import pprint import base64 def get_access_token(id,secret): get_access_token_url='https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id='+id+'&client_secret='+secret response=requests.get(get_access_token_url) content=response.json() access_token=content['access_token'] return access_token def Animation(img_file,access_token): request_url='https://aip.baidubce.com/rest/2.0/image-process/v1/selfie_anime' f=open(img_file,'rb') image=base64.b64encode(f.read()) params = {"image":image} 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) image_content=response.json() image=image_content['image'] print(image) def main(): img_file = '1.jpg'#圖片地址 id = '**************************' secret = '**************************' access_token = get_access_token(id, secret) Animation(img_file, access_token) if __name__ == '__main__': main()
獲取到一串base64編碼的圖片,這顯然快得到我們想要的東西瞭
with open('result.jpg','wb') as f: f.write(base64.b64decode(image))
保存到本地
看一下對比
呃呃呃,這。。。。還好吧,哈哈哈
四、完整代碼如下
import requests import pprint import base64 def get_access_token(id,secret): get_access_token_url='https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id='+id+'&client_secret='+secret response=requests.get(get_access_token_url) content=response.json() access_token=content['access_token'] return access_token def Animation(img_file,access_token): request_url='https://aip.baidubce.com/rest/2.0/image-process/v1/selfie_anime' f=open(img_file,'rb') image=base64.b64encode(f.read()) params = {"image":image} 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) image_content=response.json() image=image_content['image'] with open('result.jpg','wb') as f: f.write(base64.b64decode(image)) def main(): img_file = '1.jpg'#圖片地址 id = '**************************' secret = '**************************' access_token = get_access_token(id, secret) Animation(img_file, access_token) if __name__ == '__main__': main()
五、還能這麼玩?
厲害瞭,還能加口罩,試一下
修改代碼
params = { "image":image,"type":'anime_mask',"mask_id":1 } #mask_id 1-8的整數,就用個1吧
看一下效果
嘖嘖嘖
到此這篇關於python實戰之百度智能雲使人像動漫化的文章就介紹到這瞭,更多相關python人像動漫化內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- None Found