Python OpenCV實現人物動漫化效果

前言

前幾天玩抖音,發現一個人像動漫化的操作,覺得很好玩兒。我心想:python既然這麼強大,是不是也可以使用python程序來實現這樣一個操作呢?

哈哈!我自己當然是沒有這個本事編寫這樣一個牛逼的程序出來,但是百度可以呀,並且還很好用。百度AI開放平臺給我們提供瞭完整的接口,甚至貼心的將代碼都給我們寫好瞭。這些接口還支持很多主流語言都呢,像Java、Python、PHP、C#等,我們做的就是直接調用它即可。

效果怎麼樣呢?我們先來看看下方的對比圖吧。

效果展示

第一組古風美女——

原圖——

效果圖——

啊……西湖的水 我的淚……這張圖動漫化的超級完美尤其是那個手部,除瞭臉一切都好!!!

第二組真人cos——

原圖——

效果圖——

大傢選擇圖片動漫化的話 慎重點兒哈~有的挺好,有的還是挺醜的!哈哈哈

代碼展示

import requests, base64
# 這個函數的操作是為瞭獲取access_token參數
def get_access_token():
    url = 'https://aip.baidubce.com/oauth/2.0/token'
    data = {
        'grant_type': 'client_credentials',  # 固定值
        'client_id': '3j8EWb6rgg..SPY2X693LBy',  # 在開放平臺註冊後所建應用的API Key
        'client_secret': 'Px9KZuU0Gl...jTKktoCopnIWEiF57gf'  # 所建應用的Secret Key
    }
    res = requests.post(url, data=data)
    res = res.json()
    #print(res)
    access_token = res['access_token']
    return access_token
    
# 下面的代碼就是API文檔中的代碼,直接搬過來使用即可。
request_url = "https://aip.baidubce.com/rest/2.0/image-process/v1/selfie_anime"
f = open('zhao.jpg', 'rb')       # 二進制方式打開圖片文件
img = base64.b64encode(f.read()) # 圖像轉為base64的格式,這是百度API文檔中要求的
 
params = {"image":img}
access_token = '24.11731cd1f0...9f9b3a930f917f3681b.2592000.1596894747.282335-21221990'
request_url = request_url + "?access_token=" + get_access_token()
headers = {'content-type': 'application/x-www-form-urlencoded'}
response = requests.post(request_url, data=params, headers=headers)
res = response.json()
# 前面我們講述瞭這個請求返回的是一個字典,其中一個鍵就是image,代表的是處理後的圖像信息。
# 將這個圖像信息寫入,得到最終的效果圖。
if res:
    f = open("kouzhao4.jpg", 'wb')
    after_img = res['image']
    after_img = base64.b64decode(after_img)
    f.write(after_img)
    f.close()

註意

尋找 API Key 和 Secret Key首先登陸百度智能雲的網址。

百度智能雲

https://login.bce.baidu.com/

到此這篇關於Python OpenCV實現人物動漫化效果的文章就介紹到這瞭,更多相關Python OpenCV人物動漫化內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: