之前無(wú)意中看到有某位博主寫(xiě)過(guò)人像動(dòng)漫化這樣的文章,看著還挺好玩,所以我也想嘗試一下。
利用百度智能云中的人工智能,對(duì)圖片進(jìn)行處理達(dá)到人像動(dòng)漫化的效果。
1.百度云智能賬號(hào)創(chuàng)建
2.圖像特效應(yīng)用
3.開(kāi)發(fā)環(huán)境python3.7+pycharm
首先要注冊(cè)一個(gè)百度智能云賬號(hào),并創(chuàng)建這個(gè)圖像特效應(yīng)用
當(dāng)我們要使用一個(gè)我們不太了解的東西時(shí),閱讀官方文檔無(wú)疑是最重要的,官方文檔一般都寫(xiě)的特別詳細(xì),對(duì)每一個(gè)功能描述的很細(xì)節(jié),我們先來(lái)看一下
而且這里有案例,這里我使用的是python
因?yàn)檎{(diào)用這么個(gè)接口api要進(jìn)行鑒權(quán),就是官方文檔說(shuō)得到access_token,如何鑒權(quán)呢?
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_credentialsclient_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就是創(chuàng)建應(yīng)用的appkey和secretkey:
上述代碼打印結(jié)果有很多,閱讀官網(wǎng)文檔得知,我們這里只需要得到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_credentialsclient_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)
正片開(kāi)始
修改代碼
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_credentialsclient_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()
這時(shí)可以得到一系列的返回值
我們這里只要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_credentialsclient_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))
保存到本地
看一下對(duì)比
呃呃呃,這。。。。還好吧,哈哈哈
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_credentialsclient_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的整數(shù),就用個(gè)1吧
看一下效果
嘖嘖嘖
到此這篇關(guān)于python實(shí)戰(zhàn)之百度智能云使人像動(dòng)漫化的文章就介紹到這了,更多相關(guān)python人像動(dòng)漫化內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
標(biāo)簽:貴州 雙鴨山 日照 金華 臨汾 陽(yáng)泉 克拉瑪依 赤峰
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《python實(shí)戰(zhàn)之百度智能云使人像動(dòng)漫化》,本文關(guān)鍵詞 python,實(shí)戰(zhàn),之,百度,智能,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。