通過(guò)python我實(shí)現(xiàn)了照片轉(zhuǎn)化為動(dòng)漫模式,媳婦兒再也不用愁沒(méi)有好看的頭像了~

? 最近某音上的動(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)化效果:
卡通化的轉(zhuǎn)化效果
鉛筆風(fēng)格轉(zhuǎn)換效果:
鉛筆風(fēng)格轉(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í)——幸福

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容