Spaces:
Sleeping
Sleeping
| import base64 | |
| import io | |
| import cv2 | |
| import requests | |
| import json | |
| import gradio as gr | |
| import os | |
| from PIL import Image | |
| import numpy as np | |
| from PIL import ImageOps | |
| # Accessing a specific environment variable | |
| api_key = os.environ.get('devisionx') | |
| # Checking if the environment variable exists | |
| if not api_key: | |
| print("devisionx environment variable is not set.") | |
| exit() | |
| # Define a function to call the API and get the results | |
| def base64str_to_PILImage(base64str): | |
| base64_img_bytes = base64str.encode('utf-8') | |
| base64bytes = base64.b64decode(base64_img_bytes) | |
| bytesObj = io.BytesIO(base64bytes) | |
| return ImageOps.exif_transpose(Image.open(bytesObj)) | |
| def get_results(image, prompt): | |
| threshold = 0.5 | |
| # Convert the NumPy array to PIL image | |
| image = Image.fromarray(image) | |
| # Convert the image to base64 string | |
| with io.BytesIO() as output: | |
| image.save(output, format="JPEG") | |
| base64str = base64.b64encode(output.getvalue()).decode("utf-8") | |
| # Prepare the payload (Adjust this part according to the API requirements) | |
| payload = json.dumps({"base64str": base64str, "classes": prompt}) | |
| # Send the request to the API | |
| response = requests.put(api_key, data=payload) | |
| # Parse the JSON response | |
| data = response.json() | |
| print(response.status_code) | |
| print(data) | |
| # Access the values (Adjust this part according to the API response format) | |
| output_image_base64 = data['firstName'] # Assuming the API returns the output image as base64 | |
| # Convert the output image from base64 to PIL and then to NumPy array | |
| output_image = base64str_to_PILImage(output_image_base64) | |
| output_image = np.array(output_image) | |
| return output_image | |
| # Define the input components for Gradio (adding a new input for the prompt) | |
| image_input = gr.inputs.Image() | |
| text_input = gr.inputs.Textbox(label="Prompt") # New input for the text prompt | |
| # Define the output components for Gradio (including both image and text) | |
| description = "This is a project description. It demonstrates how to use Gradio with an image and text input to interact with an API." | |
| # Launch the Gradio interface with the description | |
| gr.Interface(fn=get_results, inputs=[image_input, text_input], outputs=outputs, description=description).launch(share=False) |