Spaces:
Runtime error
Runtime error
| import cv2 | |
| import easyocr | |
| import gradio as gr | |
| import numpy as np | |
| import requests | |
| import os | |
| API_KEY = os.getenv("API_KEY") | |
| API_URL = "https://api-inference.huggingface.co/models/dima806/facial_emotions_image_detection" | |
| headers = {"Authorization": "Bearer "+ API_KEY+""} | |
| # Instance text detector | |
| reader = easyocr.Reader(['en'], gpu=False) | |
| def query(image): | |
| image_data = np.array(image, dtype=np.uint8) | |
| # Convert the image data to binary format (JPEG) | |
| _, buffer = cv2.imencode('.jpg', image_data) | |
| # Convert the binary data to bytes | |
| binary_data = buffer.tobytes() | |
| response = requests.post(API_URL, headers=headers, data=binary_data) | |
| return response.json() | |
| def text_extraction(image): | |
| # Facial Expression Detection | |
| global text_content | |
| text_content = '' | |
| facial_data = query(image) | |
| text_ = reader.readtext(image) | |
| threshold = 0.25 | |
| # draw bbox and text | |
| for t_, t in enumerate(text_): | |
| bbox, text, score = t | |
| text_content = text_content + ' ' + ' '.join(text) | |
| if score > threshold: | |
| cv2.rectangle(image, tuple(map(int, bbox[0])), tuple(map(int, bbox[2])), (0, 255, 0), 5) | |
| #output the image | |
| return image, text_content, facial_data | |
| # Define Gradio interface | |
| iface = gr.Interface( | |
| fn=text_extraction, | |
| inputs=gr.Image(), | |
| outputs=[gr.Image(), gr.Textbox(label="Text Content"), gr.JSON(label="Facial Data")] | |
| ) | |
| # Launch the Gradio interface | |
| iface.launch() |