目錄
- 一、目標(biāo)
- 二、準(zhǔn)備工作
- 三、操作流程
- 3.1 閱讀官方文檔
- 3.2 開始實(shí)現(xiàn)鑒權(quán)
- 3.3 人像動(dòng)漫化實(shí)現(xiàn)
- 四、完整代碼如下
- 五、還能這么玩?
一、目標(biāo)
之前無意中看到有某位博主寫過人像動(dòng)漫化這樣的文章,看著還挺好玩,所以我也想嘗試一下。
利用百度智能云中的人工智能,對(duì)圖片進(jìn)行處理達(dá)到人像動(dòng)漫化的效果。
二、準(zhǔn)備工作
1.百度云智能賬號(hào)創(chuàng)建
2.圖像特效應(yīng)用
3.開發(fā)環(huán)境python3.7+pycharm
首先要注冊(cè)一個(gè)百度智能云賬號(hào),并創(chuàng)建這個(gè)圖像特效應(yīng)用
![](/d/20211017/4796ce9f4eb84b12e48764ab7ba7fc29.gif)
三、操作流程
3.1 閱讀官方文檔
當(dāng)我們要使用一個(gè)我們不太了解的東西時(shí),閱讀官方文檔無疑是最重要的,官方文檔一般都寫的特別詳細(xì),對(duì)每一個(gè)功能描述的很細(xì)節(jié),我們先來看一下
![](/d/20211017/c059f6594e2af62a33dcb4705affdc80.gif)
![](/d/20211017/158e7a7476ecb3d4eb01d38471753f45.gif)
而且這里有案例,這里我使用的是python
3.2 開始實(shí)現(xiàn)鑒權(quán)
因?yàn)檎{(diào)用這么個(gè)接口api要進(jìn)行鑒權(quán),就是官方文檔說得到access_token,如何鑒權(quán)呢?
![](/d/20211017/94cf968248d03c5d374aa8638a8d82e0.gif)
![](/d/20211017/05236a7ccecc0c69a29adeea5de8aeea.gif)
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:
![](/d/20211017/d0ab4f17d70c11fcdfa0d4c738168e0b.gif)
上述代碼打印結(jié)果有很多,閱讀官網(wǎng)文檔得知,我們這里只需要得到access_token就OK了
![](/d/20211017/aa5bbf7298509e580a003c8559fbe594.gif)
修改上述代碼以獲取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)
3.3 人像動(dòng)漫化實(shí)現(xiàn)
正片開始
![](/d/20211017/289ac9de025a628ff8bc4ac9e97cf30d.gif)
![](/d/20211017/074b25a6bc8d5eba955aef56146ddbb9.gif)
修改代碼
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í)可以得到一系列的返回值
![](/d/20211017/eeeb586b7e5777bccb9eea0a2be96982.gif)
我們這里只要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ì)比
![](/d/20211017/d3358c342dd264d84f44228207719e8e.gif)
![](/d/20211017/a686bbf9ca02ec8b85b059bc25c1f685.gif)
呃呃呃,這。。。。還好吧,哈哈哈
四、完整代碼如下
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()
五、還能這么玩?
![](/d/20211017/aef2f95deafd5c5b2f6a3191e6d9a750.gif)
厲害了,還能加口罩,試一下
修改代碼
params =
{
"image":image,"type":'anime_mask',"mask_id":1
}
#mask_id 1-8的整數(shù),就用個(gè)1吧
看一下效果
![](/d/20211017/2ad4bc946c21929d6334c0ac1ee33213.gif)
嘖嘖嘖
到此這篇關(guān)于python實(shí)戰(zhàn)之百度智能云使人像動(dòng)漫化的文章就介紹到這了,更多相關(guān)python人像動(dòng)漫化內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- python實(shí)現(xiàn)人像動(dòng)漫化的示例代碼
- python爬蟲實(shí)例之獲取動(dòng)漫截圖
- python爬蟲智能翻頁批量下載文件的實(shí)例詳解
- vscode如何安裝漢化和Python智能感知
- python實(shí)現(xiàn)智能語音天氣預(yù)報(bào)
- python實(shí)現(xiàn)人工智能Ai摳圖功能
- Python人工智能之路 jieba gensim 最好別分家之最簡單的相似度實(shí)現(xiàn)
- Python人工智能之路 之PyAudio 實(shí)現(xiàn)錄音 自動(dòng)化交互實(shí)現(xiàn)問答