? 最近某音上的動(dòng)漫特效特別火,很多人都玩著動(dòng)漫肖像,我媳婦兒也不例外??粗@么喜歡這個(gè)特效,我決定做一個(gè)圖片處理工具,這樣媳婦兒的動(dòng)漫頭像就有著落了。
編碼
為了快速實(shí)現(xiàn)我們的目標(biāo),我們就不自己寫(xiě)圖片處理程序了,我們直接調(diào)用百度AI開(kāi)放平臺(tái)提供的接口實(shí)現(xiàn)我們的需求。
編碼
這一次我們導(dǎo)入如下兩個(gè)庫(kù)
# -*- coding:utf-8 -*-
#author:菜鳥(niǎo)小白的學(xué)習(xí)分享
import requests, base64
我們需要進(jìn)行百度AI開(kāi)放平臺(tái)的接口認(rèn)證,代碼如下:
# -*- coding:utf-8 -*-
#author:菜鳥(niǎo)小白的學(xué)習(xí)分享
# 百度AI開(kāi)放平臺(tái)鑒權(quán)函數(shù)
def get_access_token():
url = 'https://aip.baidubce.com/oauth/2.0/token'
data = {
'grant_type': 'client_credentials', # 固定值
'client_id': 'A3ppUrgl6H*******NjDN4Bb', # 在開(kāi)放平臺(tái)注冊(cè)后所建應(yīng)用的API Key
'client_secret': 'SqaeFpiPPC**********H1lsb0xO3w' # 所建應(yīng)用的Secret Key
}
res = requests.post(url, data=data)
res = res.json()
access_token = res['access_token']
return access_token
因?yàn)榘俣華I平臺(tái)提供了多種圖像處理方式,請(qǐng)求URL主體都相同,但是傳參不同,所以我們需要對(duì)不同的處理方式進(jìn)行參數(shù)處理,代碼如下:
# -*- coding:utf-8 -*-
#author:菜鳥(niǎo)小白的學(xué)習(xí)分享
def get_config():
img_before = input("請(qǐng)輸入當(dāng)前文件夾下需要處理的圖片名稱:")
process_action = ['','selfie_anime','colourize','style_trans']
print("支持以下處理動(dòng)作:\n1:為人像動(dòng)漫化\n2:圖像上色\n3:為圖像風(fēng)格化")
# 處理動(dòng)作: selfie_anime 為人像動(dòng)漫化,colourize 圖像上色,style_trans 為圖像風(fēng)格化
i = int(input("請(qǐng)輸入需要處理的動(dòng)作:"))
"""
cartoon:卡通畫(huà)風(fēng)格
pencil:鉛筆風(fēng)格
color_pencil:彩色鉛筆畫(huà)風(fēng)格
warm:彩色糖塊油畫(huà)風(fēng)格
wave:神奈川沖浪里油畫(huà)風(fēng)格
lavender:薰衣草油畫(huà)風(fēng)格
mononoke:奇異油畫(huà)風(fēng)格
scream:吶喊油畫(huà)風(fēng)格
gothic:哥特油畫(huà)風(fēng)格"""
others = ['','cartoon','pencil','color_pencil','warm','wave','lavender','mononoke','scream','gothic']
j = 0
if process_action[i] == 'style_trans':
print("支持轉(zhuǎn)化的風(fēng)格有:\n\
1:卡通畫(huà)風(fēng)格\n\
2:鉛筆風(fēng)格\n\
3:彩色鉛筆畫(huà)風(fēng)格\n\
4:彩色糖塊油畫(huà)風(fēng)格\n\
5:神奈川沖浪里油畫(huà)風(fēng)格\n\
6:薰衣草油畫(huà)風(fēng)格\n\
7:奇異油畫(huà)風(fēng)格\n\
8:吶喊油畫(huà)風(fēng)格\n\
9:哥特油畫(huà)風(fēng)格\n")
j = int(input("請(qǐng)輸入需要轉(zhuǎn)化的風(fēng)格類型(數(shù)字):"))
return img_before,process_action[i],others[j]
我們獲取到圖片和處理參數(shù)之后,就拿著這些信息去請(qǐng)求百度AI開(kāi)放平臺(tái)了
# -*- coding:utf-8 -*-
#author:菜鳥(niǎo)小白的學(xué)習(xí)分享
def image_process(img_before, img_after, how_to_deal,others):
# 函數(shù)的三個(gè)參數(shù),一個(gè)是轉(zhuǎn)化前的文件名,一個(gè)是轉(zhuǎn)化后的文件名,均在同一目錄下,第三個(gè)是圖像處理能力選擇
request_url = 'https://aip.baidubce.com/rest/2.0/image-process/v1/' + how_to_deal
?
file = open(img_before, 'rb') # 二進(jìn)制讀取圖片
origin_img = base64.b64encode(file.read()) # 將圖片進(jìn)行base64編碼
headers = {'Content-Type': 'application/x-www-form-urlencoded'}
data = {
'access_token': get_access_token(),
'image': origin_img,
'option': others
}
?
res = requests.post(request_url, data=data, headers=headers)
res = res.json()
?
if res:
f = open(img_after, 'wb')
after_img = res['image']
after_img = base64.b64decode(after_img)
f.write(after_img)
f.close()
最后,我們?cè)侔阎骱瘮?shù)調(diào)用寫(xiě)一下
# -*- coding:utf-8 -*-
#author:菜鳥(niǎo)小白的學(xué)習(xí)分享
if __name__ == '__main__':
# 選擇輸入信息
img_before, process_action, others = get_config()
img_after = img_before.split('.') # 將原文件名分成列表
img_after = img_after[0] + '_1.' + img_after[1] # 新生成的文件名為原文件名上加 _1
image_process(img_before, img_after, process_action,others)
print('done!')
實(shí)現(xiàn)效果
原始圖片:

卡通化的轉(zhuǎn)化效果:

鉛筆風(fēng)格轉(zhuǎn)換效果:

彩鉛風(fēng)格轉(zhuǎn)換效果:

其它效果就由小伙伴們自行實(shí)驗(yàn)吧,時(shí)間太晚了,我就不一一嘗試了。
程序獲取
考慮到有的小伙伴還沒(méi)有python環(huán)境也想體驗(yàn)工具效果,我把也代碼打包成了可執(zhí)行程序,關(guān)注公眾號(hào)“菜鳥(niǎo)小白的學(xué)習(xí)分享”回復(fù)“圖片處理程序”即可獲取。
有興趣自己研究的小伙伴想要獲取源碼的話,關(guān)注公眾號(hào)“菜鳥(niǎo)小白的學(xué)習(xí)分享”回復(fù)“圖片處理源碼”即可獲取。
如果你也認(rèn)可菜鳥(niǎo)小白的學(xué)習(xí)分享的話,請(qǐng)給我一個(gè)在看、點(diǎn)贊、關(guān)注+贊賞,因?yàn)橛心銈?,所以我一直在努力?/p>
推薦閱讀:
教你搭建微信公眾號(hào)自動(dòng)答復(fù)機(jī)器人
媳婦兒讓我給她找一個(gè)PDF轉(zhuǎn)word免費(fèi)工具,找了半天我決定給她寫(xiě)一個(gè)出來(lái)-
python使用cx_Oracle庫(kù)連接oracle服務(wù)器
用python批量處理Excel表格,處理結(jié)果又快又好,做辦公室最靚的那個(gè)仔
關(guān)注微信公眾號(hào)——菜鳥(niǎo)小白的學(xué)習(xí)分享
媽媽再也不用擔(dān)心我找不到路了
[圖片上傳失敗...(image-4ac419-1593838541597)]
一個(gè)人的學(xué)習(xí)——孤單
一群人的學(xué)習(xí)——幸福