干啥啥不行,吹牛第一名——Python頭像動(dòng)漫化,快來(lái)用女朋友照片生成一個(gè)動(dòng)漫頭像吧

目錄

Python頭像動(dòng)漫化,快來(lái)生成一個(gè)自己的動(dòng)漫頭像吧

一、前言

很多時(shí)候我們都會(huì)為頭像發(fā)愁,像我這種萬(wàn)年不換頭像的咸魚(yú)從來(lái)沒(méi)有這種煩惱。但是吧,有個(gè)個(gè)性化的頭像還是非常有趣的,因?yàn)檫@個(gè)摳鼻屎的頭像除了摳鼻屎這點(diǎn),其它都很符合本人的氣質(zhì),所以已經(jīng)夠用了。但是我還是打算把這個(gè)小技巧給大家分享。

二、效果展示

在我多次測(cè)試后,發(fā)現(xiàn)女生頭像的生成還是比較不錯(cuò)的,而且最好是正面照。而男生動(dòng)漫頭像的生成就有點(diǎn)差強(qiáng)人意了,大家可以自己試試,下面我們看看我用有村大妹子生成的兩張圖片,我們先看第一張:


在這里插入圖片描述

接下來(lái)是第二張,我用的是墊底辣妹中的形象:


在這里插入圖片描述

兩張效果都還可以,主要還是人物的頭部動(dòng)漫化了,其它部分只是趨于動(dòng)漫的風(fēng)格。不過(guò)我覺(jué)得還是很可以的。

三、實(shí)現(xiàn)

對(duì)于我這種基本功不扎實(shí)的人來(lái)說(shuō),實(shí)現(xiàn)這種只能調(diào)用API了。我使用的是百度的API,我們可以進(jìn)入百度AI開(kāi)放平臺(tái)注冊(cè)賬號(hào),具體流程就不講了。登陸后我們可以看到如下界面:

在這里插入圖片描述

我們依次點(diǎn)擊開(kāi)放能力》圖像技術(shù)》人像動(dòng)漫化,然后我們點(diǎn)擊立即使用,再創(chuàng)建應(yīng)用就可以了。在應(yīng)用里面我們可以看到三個(gè)參數(shù)AppID、API KeySecret Key三個(gè)參數(shù),我們把這三個(gè)參數(shù)記住就可以開(kāi)始我們的編程了。

實(shí)現(xiàn)人像動(dòng)漫化需要用到兩個(gè)接口,一個(gè)用來(lái)獲取access_token,另一個(gè)則是用來(lái)獲取動(dòng)漫頭像,我們來(lái)獲取access_token:

import requests
def get_access_token():
    # 獲取token的API
    url = 'https://aip.baidubce.com/oauth/2.0/token'
    # 獲取access_token需要的參數(shù)
    params = {
        # 固定參數(shù)
        'grant_type':'client_credentials',
        # 必選參數(shù),傳入你的API Key
        'client_id':'你的API Key',
        # 必選參數(shù),傳入你的Secret Key
        'client_secret':'你的Secret Key'
    }
    # 發(fā)送請(qǐng)求,獲取響應(yīng)數(shù)據(jù)
    response = requests.post(url, params)
    # 將響應(yīng)的數(shù)據(jù)轉(zhuǎn)成字典類型,然后取出access_token
    access_token = eval(response.text)['access_token']
    # 將access_token返回
    return access_token
12345678910111213141516171819

這里我們用到了requests模塊,如果沒(méi)有安裝的可以在命令行執(zhí)行下列語(yǔ)句:

pip install requests
1

接下來(lái)就是我們頭像動(dòng)漫化了:

import base64
import requests
def img2Cartoon(img):
    # 頭像動(dòng)漫化的API
    url = 'https://aip.baidubce.com/rest/2.0/image-process/v1/selfie_anime'
    # 以二進(jìn)制的方式讀取原始圖片
    origin_im = open(img, 'rb')
    # 將圖片進(jìn)行base64編碼
    img = base64.b64encode(origin_im .read())
    # 關(guān)閉原圖片
    origin_im.close()

    # 請(qǐng)求的headers信息,固定寫法
    headers = {'content-type':'application/x-www-form-urlencoded'}

    # 請(qǐng)求的參數(shù)
    params = {
        # 開(kāi)始獲取的access_token
        'access_token':get_access_token(),
        # 圖片的base64編碼
        'image':img,
    }
    # 發(fā)送請(qǐng)求
    response = requests.post(url, data=params, headers=headers)
    # 對(duì)響應(yīng)結(jié)果進(jìn)行處理
    if response:
        # 打開(kāi)一個(gè)文件
        f = open('result.jpg', 'wb')
        # 獲取動(dòng)漫頭像
        anime = response.json()['image']
        # 對(duì)返回的頭像進(jìn)行解碼
        anime = base64.b64decode(anime)
        # 將頭像寫入文件當(dāng)中
        f.write(anime)
        f.close()
1234567891011121314151617181920212223242526272829303132333435

我們只需要在main中調(diào)用img2Cartoon函數(shù)即可完成動(dòng)漫頭像的生成,完整代碼如下:

import base64
import requests

def get_access_token():
    # 獲取token的API
    url = 'https://aip.baidubce.com/oauth/2.0/token'
    # 獲取access_token需要的參數(shù)
    params = {
        # 固定參數(shù)
        'grant_type':'client_credentials',
        # 必選參數(shù),傳入你的API Key
        'client_id':'你的API Key',
        # 必選參數(shù),傳入你的Secret Key
        'client_secret':'你的Secret Key'
    }
    # 發(fā)送請(qǐng)求,獲取響應(yīng)數(shù)據(jù)
    response = requests.post(url, params)
    # 將響應(yīng)的數(shù)據(jù)轉(zhuǎn)成字典類型,然后取出access_token
    access_token = eval(response.text)['access_token']
    # 將access_token返回
    return access_token

def img2Cartoon(img):
    # 頭像動(dòng)漫化的API
    url = 'https://aip.baidubce.com/rest/2.0/image-process/v1/selfie_anime'
    # 以二進(jìn)制的方式讀取原始圖片
    origin_im = open(img, 'rb')
    # 將圖片進(jìn)行base64編碼
    img = base64.b64encode(origin_im .read())
    # 關(guān)閉原圖片
    origin_im.close()

    # 請(qǐng)求的headers信息,固定寫法
    headers = {'content-type':'application/x-www-form-urlencoded'}

    # 請(qǐng)求的參數(shù)
    params = {
        # 開(kāi)始獲取的access_token
        'access_token':get_access_token(),
        # 圖片的base64編碼
        'image':img,
    }
    # 發(fā)送請(qǐng)求
    response = requests.post(url, data=params, headers=headers)
    # 對(duì)響應(yīng)結(jié)果進(jìn)行處理
    if response:
        # 打開(kāi)一個(gè)文件
        f = open('result.jpg', 'wb')
        # 獲取動(dòng)漫頭像
        anime = response.json()['image']
        # 對(duì)返回的頭像進(jìn)行解碼
        anime = base64.b64decode(anime)
        # 將頭像寫入文件當(dāng)中
        f.write(anime)
        f.close()

if __name__ == '__main__':
    img2Cartoon('origin.jpg')
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758

四、總結(jié)

這樣我們就實(shí)現(xiàn)了頭像動(dòng)漫化的操作,非常簡(jiǎn)單,因?yàn)橹饕墓ぷ鞫加砂俣鹊某绦騿T幫我們實(shí)現(xiàn)了,大家可以使用自己的照片生成一些個(gè)性化的頭像。如果太丑的話不要跑回來(lái)罵我就好了。

如果對(duì)軟件測(cè)試有興趣,想了解更多的測(cè)試知識(shí),解決測(cè)試問(wèn)題,以及入門指導(dǎo),幫你解決測(cè)試中遇到的困惑,我們這里有技術(shù)高手。如果你正在找工作或者剛剛學(xué)校出來(lái),又或者已經(jīng)工作但是經(jīng)常覺(jué)得難點(diǎn)很多,覺(jué)得自己測(cè)試方面學(xué)的不夠精想要繼續(xù)學(xué)習(xí)的,想轉(zhuǎn)行怕學(xué)不會(huì)的,都可以加入我們644956177。
群內(nèi)可領(lǐng)取最新軟件測(cè)試大廠面試資料和Python自動(dòng)化、接口、框架搭建學(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ù)。

相關(guān)閱讀更多精彩內(nèi)容

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