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:])) | |