Spaces:
Sleeping
Sleeping
| import base64 | |
| import plotly.graph_objects as go | |
| import streamlit as st | |
| def set_background(image_file): | |
| """ | |
| This function sets the background of a Streamlit app to an image specified by the given image file. | |
| Parameters: | |
| image_file (str): The path to the image file to be used as the background. | |
| Returns: | |
| None | |
| """ | |
| with open(image_file, "rb") as f: | |
| img_data = f.read() | |
| b64_encoded = base64.b64encode(img_data).decode() | |
| style = f""" | |
| <style> | |
| .stApp {{ | |
| background-image: url(data:image/png;base64,{b64_encoded}); | |
| background-size: cover; | |
| }} | |
| </style> | |
| """ | |
| st.markdown(style, unsafe_allow_html=True) | |
| def visualize(image, bboxes): | |
| """ | |
| Visualizes the image with bounding boxes using Plotly. | |
| Args: | |
| image: The input image. | |
| bboxes (list): A list of bounding boxes in the format [x1, y1, x2, y2]. | |
| """ | |
| # Get the width and height of the image | |
| width, height = image.size | |
| shapes = [] | |
| for bbox in bboxes: | |
| x1, y1, x2, y2 = bbox | |
| # Convert bounding box coordinates to the format expected by Plotly | |
| shapes.append(dict( | |
| type="rect", | |
| x0=x1, | |
| y0=height - y2, | |
| x1=x2, | |
| y1=height - y1, | |
| line=dict(color='red', width=6), | |
| )) | |
| fig = go.Figure() | |
| # Add the image as a layout image | |
| fig.update_layout( | |
| images=[dict( | |
| source=image, | |
| xref="x", | |
| yref="y", | |
| x=0, | |
| y=height, | |
| sizex=width, | |
| sizey=height, | |
| sizing="stretch" | |
| )] | |
| ) | |
| # Set the axis ranges and disable axis labels | |
| fig.update_xaxes(range=[0, width], showticklabels=False) | |
| fig.update_yaxes(scaleanchor="x", | |
| scaleratio=1, | |
| range=[0, width], showticklabels=False) | |
| fig.update_layout( | |
| height=800, | |
| updatemenus=[ | |
| dict( | |
| direction='left', | |
| pad=dict(r=10, t=10), | |
| showactive=True, | |
| x=0.11, | |
| xanchor="left", | |
| y=1.1, | |
| yanchor="top", | |
| type="buttons", | |
| buttons=[ | |
| dict(label="Original", | |
| method="relayout", | |
| args=["shapes", []]), | |
| dict(label="Detections", | |
| method="relayout", | |
| args=["shapes", shapes]) | |
| ], | |
| ) | |
| ] | |
| ) | |
| st.plotly_chart(fig) |