




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第Python利用AI接口實(shí)現(xiàn)摳圖并改圖片底色目錄前言一、注冊(cè)百度AI賬號(hào)二、代碼實(shí)現(xiàn)1.引入庫(kù)2.獲取AccessToken3.核心代碼4.圖片底色填充5.圖片壓縮6.獲取圖圖片大小7.png格式轉(zhuǎn)jpg8.主函數(shù)9.完整代碼
前言
嗨嗨,大家好呀,我是小圓。有時(shí)候我們的證件照需要換底色,又來(lái)不及去照相館拍照,用ps也不好摳圖,所以今天給你們分享一下如何用python來(lái)?yè)笀D,并換底色
一、注冊(cè)百度AI賬號(hào)
創(chuàng)建人像分割應(yīng)用
百度人像分割主頁(yè):按步驟注冊(cè),登錄,實(shí)名認(rèn)證即可。
在控制臺(tái)主頁(yè)找到人體分析
創(chuàng)建應(yīng)用
里面的需要填寫的內(nèi)容可以隨便寫,新用戶要去領(lǐng)取免費(fèi)資源,不然使用不了。
創(chuàng)建完成在應(yīng)用列表記錄APIKey、SecretKey的值,稍后要用。
至此,注冊(cè)賬號(hào)和創(chuàng)建應(yīng)用的任務(wù)就完成了。
二、代碼實(shí)現(xiàn)
1.引入庫(kù)
importos
importrequests
importbase64
importcv2
importnumpyasnp
fromPILimportImage
frompathlibimportPath
???????path=os.getcwd()
paths=list(Path(path).glob('*'))
2.獲取AccessToken
defget_access_token():
url='/oauth/2.0/token'
data={
'grant_type':'client_credentials',#固定值
'client_id':'替換成你的APIKey',#在開放平臺(tái)注冊(cè)后所建應(yīng)用的APIKey
'client_secret':'替換成你的SecretKey'#所建應(yīng)用的SecretKey
res=requests.post(url,data=data)
res=res.json()
access_token=res['access_token']
returnaccess_token
3.核心代碼
defremovebg():
try:
request_url="/rest/2.0/image-classify/v1/body_seg"
#二進(jìn)制方式打開圖片文件
f=open(name,'rb')
img=base64.b64encode(f.read())
params={"image":img}
access_token=get_access_token()
request_url=request_url+"access_token="+access_token
headers={'content-type':'application/x-www-form-urlencoded'}
response=requests.post(request_url,data=params,headers=headers)
ifresponse:
res=response.json()["foreground"]
png_name=name.split('.')[0]+".png"
withopen(png_name,"wb")asf:
data=base64.b64decode(res)
f.write(data)
fullwhite(png_name)#png圖片底色填充,視情況舍去
png_jpg(png_name)#png格式轉(zhuǎn)jpg,視情況舍去
os.remove(png_name)#刪除原png圖片,視情況舍去
print(name+"\t處理成功!")
exceptExceptionase:
pass
4.圖片底色填充
deffullwhite(png_name):
im=Image.open(png_name)
x,y=im.size
try:
p=Image.new('RGBA',im.size,(255,255,255))#使用白色來(lái)填充背景,視情況更改
p.paste(im,(0,0,x,y),im)
p.save(png_name)
except:
pass
5.圖片壓縮
#compress_rate:數(shù)值越小照片越模糊
defresize(compress_rate=0.5):
im=Image.open(name)
w,h=im.size
im_resize=im.resize((int(w*compress_rate),int(h*compress_rate)))
resize_w,resieze_h=im_resize.size
#quality代表圖片質(zhì)量,值越低越模糊
im_resize.save(name)
im.close()
6.獲取圖圖片大小
defget_size():
size=os.path.getsize(name)
returnsize/1024
7.png格式轉(zhuǎn)jpg
defpng_jpg(png_name):
im=Image.open(png_name)
bg=Image.new('RGB',im.size,(255,255,255))
bg.paste(im)
jpg_name=png_name.split('.')[0]+".jpg"
#quality代表圖片質(zhì)量,值越低越模糊
bg.save(jpg_name,quality=70)
im.close()
8.主函數(shù)
if__name__=='__main__':
foriinpaths:
name=os.path.basename()
if(name==os.path.basename(__file__)):
continue
size=get_size()
##照片壓縮
whilesize=900:
size=get_size()
resize()
removebg()
print("")
9.完整代碼
#人像分割
importos
importrequests
importbase64
importcv2
importnumpyasnp
fromPILimportImage
frompathlibimportPath
path=os.getcwd()
paths=list(Path(path).glob('*'))
defget_access_token():
url='/oauth/2.0/token'
data={
'grant_type':'client_credentials',#固定值
'client_id':'替換成你的APIKey',#在開放平臺(tái)注冊(cè)后所建應(yīng)用的APIKey
'client_secret':'替換成你的SecretKey'#所建應(yīng)用的SecretKey
res=requests.post(url,data=data)
res=res.json()
access_token=res['access_token']
returnaccess_token
defpng_jpg(png_name):
im=Image.open(png_name)
bg=Image.new('RGB',im.size,(255,255,255))
bg.paste(im)
jpg_name=png_name.split('.')[0]+".jpg"
#quality代表圖片質(zhì)量,值越低越模糊
bg.save(jpg_name,quality=70)
im.close()
#compress_rate:數(shù)值越小照片越模糊
defresize(compress_rate=0.5):
im=Image.open(name)
w,h=im.size
im_resize=im.resize((int(w*compress_rate),int(h*compress_rate)))
resize_w,resieze_h=im_resize.size
#quality代表圖片質(zhì)量,值越低越模糊
im_resize.save(name)
im.close()
defget_size():
size=os.path.getsize(name)
returnsize/1024
deffullwhite(png_name):
im=Image.open(png_name)
x,y=im.size
try:
#使用白色來(lái)填充背景
#(alphabandaspastemask).
p=Image.new('RGBA',im.size,(255,255,255))
p.paste(im,(0,0,x,y),im)
p.save(png_name)
except:
pass
defremovebg():
try:
request_url="/rest/2.0/image-classify/v1/body_seg"
#二進(jìn)制方式打開圖片文件
f=open(name,'rb')
img=base64.b64encode(f.read())
params={"image":img}
access_token=get_access_token()
request_url=request_url+"access_token="+access_token
headers={'content-type':'application/x-www-form-urlencoded'}
response=requests.post(request_url,data=params,headers=headers)
ifresponse:
res=response.json()["foreground"]
png_name=name.split('.')[0]+".png"
withopen(png_name,"wb")asf:
data=base64.b64decode(res)
f.write(data)
fullwhite(png_name)
png_jpg(png_name)
os.remove(png_name)
print(name+"\t處理成功!")
exceptExceptionase:
pass
if__name__=='__main__':
foriinpaths:
name=os.pat
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年河北省臨漳縣人民醫(yī)院公開招聘護(hù)理工作人員試題帶答案詳解
- 2025年部編版新教材語(yǔ)文小學(xué)三年級(jí)上冊(cè)第四單元復(fù)習(xí)課教案
- 嘉興市期末數(shù)學(xué)試卷
- 杭州第一次聯(lián)考數(shù)學(xué)試卷
- 廣東今年中考數(shù)學(xué)試卷
- 健康管理中心課件
- 2020-2025年中國(guó)虹鱒魚養(yǎng)殖行業(yè)發(fā)展趨勢(shì)預(yù)測(cè)及投資規(guī)劃研究報(bào)告
- 中國(guó)中華鱉行業(yè)發(fā)展監(jiān)測(cè)及投資戰(zhàn)略規(guī)劃研究報(bào)告
- 2025年中國(guó)包裹分揀設(shè)備行業(yè)市場(chǎng)深度分析及投資策略咨詢報(bào)告
- 中國(guó)夾具座行業(yè)市場(chǎng)發(fā)展前景及發(fā)展趨勢(shì)與投資戰(zhàn)略研究報(bào)告(2024-2030)
- (高清版)WST 348-2024 尿液標(biāo)本的采集與處理
- FZT 73012-2017 文胸行業(yè)標(biāo)準(zhǔn)
- 肺系病的中醫(yī)護(hù)理
- 四型機(jī)場(chǎng)方案
- 體育運(yùn)動(dòng)與勞動(dòng)教學(xué)計(jì)劃結(jié)合
- 腫瘤登記基本技術(shù)腫瘤命名與編碼課件
- 《高效能人士的七個(gè)習(xí)慣》原創(chuàng)
- 全國(guó)各省市縣-一覽表
- 低壓配電柜檢驗(yàn)報(bào)告
- 暑假假期安全教育 家長(zhǎng)會(huì)課件
- 四川省成都市泡桐樹小學(xué)六年級(jí)小升初語(yǔ)文測(cè)試卷(8套試卷帶答案解析)
評(píng)論
0/150
提交評(píng)論