Grounded-Segment-Anything / api_client.py
liuyizhang
update app.py
e12d135
raw history blame
No virus
2.74 kB
import requests, json
from PIL import Image
import matplotlib.pyplot as plt
import numpy as np
import base64
import io
def request_post(url, data, timeout=600, headers = None):
if headers is None:
headers = {
# 'content-type': 'application/json'
# 'Connection': 'keep-alive',
'Accept': '*/*', # 接受任何类型的返回数据
'Content-Type': 'application/json;charset=UTF-8', # 发送数据为json
# 'Content-Length': '156',
# 'Accept-Encoding': 'gzip, deflate',
# 'Accept-Language': 'zh-CN,zh;q=0.9',
# 'User-Agent': 'SamClub/5.0.45 (iPhone; iOS 15.4; Scale/3.00)',
# 'device-name': 'iPhone14,3',
# 'device-os-version': '15.4',
# 'device-type': 'ios',
# 'auth-token': authtoken,
# 'app-version': '5.0.45.1'
}
try:
response = requests.post(url=url, headers=headers, data=json.dumps(data), timeout=timeout)
response_data = response.json()
return response_data
except Exception as e:
print(f'request_post[Error]:' + str(e))
print(f'url: {url}')
print(f'data: {data}')
print(f'response: {response}')
return None
url = "http://127.0.0.1:7860/imgCLeaner"
def imgFile_to_base64(image_file):
with open(image_file, "rb") as f:
im_bytes = f.read()
im_b64_encode = base64.b64encode(im_bytes)
im_b64 = im_b64_encode.decode("utf8")
return im_b64
def base64_to_bytes(im_b64):
im_b64_encode = im_b64.encode("utf-8")
im_bytes = base64.b64decode(im_b64_encode)
return im_bytes
def base64_to_PILImage(im_b64):
im_bytes = base64_to_bytes(im_b64)
pil_img = Image.open(io.BytesIO(im_bytes))
return pil_img
def cleaner_img(image_file, remove_texts, mask_extend=20, disp_debug=True):
data = {'remove_texts': remove_texts,
'mask_extend': mask_extend,
'img': imgFile_to_base64(image_file),
}
ret = request_post(url, data, timeout=600, headers = None)
if ret['code'] == 0:
if disp_debug:
for img in ret['result']['imgs']:
pilImage = base64_to_PILImage(img)
plt.imshow(pilImage)
plt.show()
plt.clf()
plt.close('all')
img_len = len(ret['result']['imgs'])
pilImage = base64_to_PILImage(ret['result']['imgs'][img_len-1])
else:
pilImage = None
return pilImage, ret
image_file = 'dog.png'
remove_texts = "小狗 . 椅子"
mask_extend = 20
pil_image, ret = cleaner_img(image_file, remove_texts, mask_extend, disp_debug=False)
plt.imshow(pil_image)
plt.show()
plt.clf()
plt.close()