Python利用AI接口實現(xiàn)摳圖并改圖片底色_第1頁
Python利用AI接口實現(xiàn)摳圖并改圖片底色_第2頁
Python利用AI接口實現(xiàn)摳圖并改圖片底色_第3頁
Python利用AI接口實現(xiàn)摳圖并改圖片底色_第4頁
Python利用AI接口實現(xiàn)摳圖并改圖片底色_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論