Spaces:
Sleeping
Sleeping
import requests | |
import argparse | |
import sys | |
import base64 | |
# Default examples | |
# api = "http://localhost:8080/2015-03-31/functions/function/invocations" | |
# file = "./tests/data/boats.jpg" | |
def arg_parser(): | |
"""Parse arguments""" | |
# Create an ArgumentParser object | |
parser = argparse.ArgumentParser(description='Object detection inference via API call') | |
# Add arguments | |
parser.add_argument('--api', type=str, help='URL to server API (with endpoint)', required=True) | |
parser.add_argument('--file', type=str, help='Path to the input image file', required=True) | |
parser.add_argument('--model', type=str, \ | |
choices=['detr-resnet-50', 'detr-resnet-101', 'yolos-tiny', 'yolos-small'], \ | |
help='Model type', \ | |
required=False) | |
parser.add_argument('-v', '--verbose', action='store_true', help='Increase output verbosity') | |
return parser | |
def main(args=None): | |
"""Main function""" | |
args = arg_parser().parse_args(args) | |
# Use the arguments | |
if args.verbose: | |
print(f'Input file: {args.file}') | |
# Retrieve model type | |
if args.model: | |
model_name = args.model | |
else: | |
model_name = "" | |
# Load image | |
with open(args.file, 'rb') as image_file: | |
image_data = image_file.read() | |
# Encode the image data in base64 | |
encoded_image = base64.b64encode(image_data).decode('utf-8') | |
# Prepare the payload | |
payload = { | |
'body': encoded_image, | |
'isBase64Encoded': True, | |
'model': model_name, | |
} | |
# Send request to API | |
# Option 'files': A dictionary of files to send to the specified url | |
# response = requests.post(args.api, files={'image': image_data}) | |
# Option 'json': A JSON object to send to the specified url | |
response = requests.post(args.api, json = payload) | |
if response.status_code == 200: | |
print('Detection Results:') | |
# Process the response | |
# processed_data = json.loads(response.content) | |
# print('processed_data', processed_data) | |
results = response.json() | |
print("results: ", results) | |
else: | |
print(f"Error: {response.status_code}") | |
print(response.json()) | |
if __name__ == "__main__": | |
sys.exit(main(sys.argv[1:])) | |