




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第Python利用AI接口實現(xiàn)摳圖并改圖片底色目錄前言一、注冊百度AI賬號二、代碼實現(xiàn)1.引入庫2.獲取AccessToken3.核心代碼4.圖片底色填充5.圖片壓縮6.獲取圖圖片大小7.png格式轉(zhuǎn)jpg8.主函數(shù)9.完整代碼
前言
嗨嗨,大家好呀,我是小圓。有時候我們的證件照需要換底色,又來不及去照相館拍照,用ps也不好摳圖,所以今天給你們分享一下如何用python來摳圖,并換底色
一、注冊百度AI賬號
創(chuàng)建人像分割應(yīng)用
百度人像分割主頁:按步驟注冊,登錄,實名認證即可。
在控制臺主頁找到人體分析
創(chuàng)建應(yīng)用
里面的需要填寫的內(nèi)容可以隨便寫,新用戶要去領(lǐng)取免費資源,不然使用不了。
創(chuàng)建完成在應(yīng)用列表記錄APIKey、SecretKey的值,稍后要用。
至此,注冊賬號和創(chuàng)建應(yīng)用的任務(wù)就完成了。
二、代碼實現(xiàn)
1.引入庫
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',#在開放平臺注冊后所建應(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"
#二進制方式打開圖片文件
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))#使用白色來填充背景,視情況更改
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',#在開放平臺注冊后所建應(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:
#使用白色來填充背景
#(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"
#二進制方式打開圖片文件
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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《心臟除顫器的程控隨訪》課件
- 筆試與面試指導
- Proe有限元分析在工程碩士課程中的應(yīng)用課件
- 專業(yè)解析商業(yè)美術(shù)設(shè)計師考試試題及答案
- 中心衛(wèi)生院綜合業(yè)務(wù)樓項目可行性研究報告分析
- 華師倉儲管理試題及答案
- 紡織品設(shè)計中的商業(yè)模式創(chuàng)新考題及答案
- 博商課件:銷售團隊的激勵策略
- 《課件探討:質(zhì)點參考系與坐標系的奧秘》
- 2024廣告設(shè)計師在線考試的試題及答案
- 【CMMI】8. TS、PI、VV、PR 訪談問題-編碼和測試 -(含答案)
- 06J403-1 樓梯、欄桿、欄板圖集
- 危險化學品存放與使用安全規(guī)范與要求培訓
- 《鏡子的發(fā)展史》課件
- 二手車經(jīng)銷企業(yè)經(jīng)營管理等級評價規(guī)范
- 中國軍力報告2023全文
- 提香-西方美術(shù)史-
- 深圳市南山區(qū)教育系統(tǒng)招聘公辦幼兒園園長考試題庫2023
- 貧困家訪記錄表
- 明亞保險經(jīng)紀人考試題庫答案
- 機械制造技術(shù)-機械加工工藝
評論
0/150
提交評論