中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么使用Python實現一鍵摳圖功能

發布時間:2022-08-09 16:10:57 來源:億速云 閱讀:169 作者:iii 欄目:開發技術

這篇文章主要介紹“怎么使用Python實現一鍵摳圖功能”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“怎么使用Python實現一鍵摳圖功能”文章能幫助大家解決問題。

需求來源

好友 A:橡皮擦,可否提供網頁,上傳帶人像的圖片,然后可以直接摳圖,最好直接生成 PNG 圖片下載。 橡皮擦:每天需要調用多少次? 好友 A:大概 100 次吧。 橡皮擦:妥了,給你寫個免費的吧。

本案例的實戰需求是對圖片進行摳圖,每日請求量為 100,來源依舊是好友求助,既然日請求量不大,那某智能云的人像分隔接口就可以使用了,申請之后,其贈送了 10000 次,每秒限制 2 次請求,足夠使用。

怎么使用Python實現一鍵摳圖功能

實現方法

從官方下載 Python API SDK 之后,得到下圖所示目錄:

怎么使用Python實現一鍵摳圖功能

然后進入該目錄執行下述命令安裝 SDK

python setup.py build
python setup.py install

安裝成功之后就可以通過 pip list 查看相關數據。

接下來需要創建一個 AipBodyAnalysis,該對象是后續處理人像分析的核心對象。

新建 show_people.py 文件,輸入如下代碼:

from aip import AipBodyAnalysis

""" 你的 APPID AK SK """
APP_ID = '你的 App ID'
API_KEY = '你的 Api Key'
SECRET_KEY = '你的 Secret Key'

client = AipBodyAnalysis(APP_ID, API_KEY, SECRET_KEY)

其中 App IDApi KeySecret Key 都需要提前在平臺方申請使用。

接下來就可以使用人像分隔主體函數了,代碼如下:

client = AipBodyAnalysis(APP_ID, API_KEY, SECRET_KEY)
""" 讀取圖片 """
def get_file_content(filePath):
    with open(filePath, 'rb') as fp:
        return fp.read()

image = get_file_content('./demo.png')

""" 調用人像分割 """
ret = client.bodySeg(image)

print(ret)

代碼用到的測試圖為:

怎么使用Python實現一鍵摳圖功能

運行后提示 ModuleNotFoundError: No module named 'chardet',使用 pip install chardet 安裝缺少模塊。

上述 client.bodySeg(image) 函數的參數如下所示:

image:圖像數據,base64 編碼,要求 base64 編碼后大小不超過 4M,最短邊至少 15px,最長邊最大 4096px,支持 jpg/png/bmp 格式;

type:可以通過設置 type 參數,自主設置返回哪些結果圖,避免造成帶寬的浪費

可選值說明:

  • labelmap - 二值圖像,需二次處理方能查看分割效果

  • scoremap - 人像前景灰度圖

  • foreground - 人像前景摳圖,透明背景

type 參數值可以是可選值的組合,用逗號分隔;如果無此參數默認輸出全部 3 類結果圖

基于上述配置,在方法調用時添加參數,獲取人像前景摳圖。

""" 如果有可選參數 """
options = {}
options["type"] = "foreground"

""" 帶參數調用人像分割 """
ret = client.bodySeg(image, options)
print(ret)

返回參數列表如下所示:

  • labelmap:分割結果圖片,base64 編碼之后的二值圖像,需二次處理方能查看分割效果

  • scoremap :分割后人像前景的 scoremap,歸一到 0-255,不用進行二次處理,直接解碼保存圖片即可。Base64 編碼后的灰度圖文件,圖片中每個像素點的灰度值 = 置信度 * 255,置信度為原圖對應像素點位于人體輪廓內的置信度,取值范圍[0, 1]

  • foreground:分割后的人像前景摳圖,透明背景,Base64 編碼后的 png 格式圖片,不用進行二次處理,直接解碼保存圖片即可。將置信度大于 0.5 的像素摳出來,并通過 image matting 技術消除鋸齒

  • person_num:檢測到的人體框數目

  • person_info:人體框信息

此時輸出 person_num 就可以獲得人像數量,測試代碼如下所示。

ret = client.bodySeg(image, options)
print(ret["person_num"]) # 輸出 1

接下來直接保存前景摳圖,導入 base64 模塊,直接解碼保存即可。

""" 帶參數調用人像分割 """
ret = client.bodySeg(image, options)
data = ret["foreground"]

data = base64.b64decode(data)
# 生成圖片
with open("./fore.png",'wb') as f:
    f.write(data)

怎么使用Python實現一鍵摳圖功能

最后在使用一張復雜些的圖片進行測試,背景去除的非常干凈。

怎么使用Python實現一鍵摳圖功能

關于“怎么使用Python實現一鍵摳圖功能”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

西宁市| 偏关县| 南阳市| 祁连县| 垣曲县| 建平县| 三穗县| 石城县| 伊宁县| 临邑县| 石泉县| 虎林市| 南华县| 兴宁市| 武平县| 鞍山市| 衡山县| 宁陕县| 营口市| 宁化县| 南投市| 涿鹿县| 铁力市| 亳州市| 佳木斯市| 宾阳县| 白玉县| 华坪县| 名山县| 四会市| 赞皇县| 贵港市| 黄山市| 邛崃市| 靖宇县| 尼木县| 甘南县| 高密市| 南平市| 许昌县| 玛沁县|